黑马程序员技术交流社区
标题:
自己实现Map接口简单方法实现<抠脚版>
[打印本页]
作者:
My_Android
时间:
2016-5-26 09:35
标题:
自己实现Map接口简单方法实现<抠脚版>
import java.util.Map;
/**
* 自定义实现Map的功能
* 不完美的实现方法
* Map:存放键值对,根据键对象找对应值的对象
* @author hasee
*
*/
public class SxtMap001 {
SxtEntry[] arr = new SxtEntry[999];
private int size;
/**
* 添加一个键值对元素对象
* @param key
* @param value
*/
public void put(Object key,Object value){
SxtEntry e = new SxtEntry(key,value);
//每次添加元素遍历集合的key是否相,如果相等覆盖value值。
for(int i=0;i<size;i++){
if(key.equals(arr[i].key)){
arr[i].value = value;
return ;
}
}
arr[size++] = e;
}
/**
* 通过键对象,找相对应的值对象
* @param key
* @return
*/
public Object get(Object key){
for(int i=0;i<size;i++){
if(key.equals(arr[i].key)){
return arr[i].value;
}
}
return null;
}
/**
* 通过键对象删除键值对对象
* @param key
*/
public void remove(Object key){
for(int i=0;i<size;i++){
if(key.equals(arr[i].key)){
System.arraycopy(arr, i+1, arr, i, size-i-1);
}
}
size--;
}
/**
* 检测键key对象是否存在,存在返回true
* @param key
* @return
*/
public boolean containsKey(Object key){
for(int i=0;i<size;i++){
if(key.equals(arr[i].key)){
return true;
}
}
return false;
}
/**
* 检测值value对象是否存在,存在返回true
* @param value
* @return
*/
public boolean containsValue(Object value){
for(int i=0;i<size;i++){
if(value.equals(arr[i].value)){
return true;
}
}
return false;
}
/**
* 把一个Map集合的所有元素内容,添加到该集合里面
* @param t
*/
public void putAll(SxtMap001 t){
for(int i=0;i<t.size();i++){
SxtEntry s= t.arr[i];
put(s.key,s.value);
}
}
/**
* 集合有没有元素,没有返回true
* @return
*/
public boolean isEmpty(){
return size == 0;
}
/**
* 删除集合的所有内容
*/
public void clear(){
SxtEntry[] s = new SxtEntry[arr.length];
arr = s;
size = 0;
}
public int size(){
return size;
}
}
/**
* 定义一个类表示键对象和值对象
*/
class SxtEntry{
Object key;
Object value;
public SxtEntry(Object key,Object value){
this.key = key;
this.value = value;
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2