自定义实现Map类 高效版
package text;
import java.util.*;
/*
*自定义Map的升级版
*提高查询的效率
*数组套列表套对象
* */
public class SxtMap002{
LinkedList[] arr= new LinkedList[999];//Mapde 底层实现结构是:数组+链表
int size;
public void put(Object key,Object value){
SxtEntry e=new SxtEntry(key,value);
int a=key.hashCode()%arr.length; //利用hashCode方法求出要存放的位置
if(arr[a]==null){
LinkedList list=new LinkedList();
arr[a]=list;//将list插入数组中
list.add(e);//将Sxtentry对象插入列表中
}else{
LinkedList list =arr[a];//取出数值中列表进行遍历
for(int i=0;i<list.size();i++){
SxtEntry e2=(SxtEntry) list.get(i);
if(e2.key.equals(key)){
e2.value=value;//键值重复直接覆盖
return;
}
}
arr[a].add(e);
}
}
public Object get(Object key){
int a= key.hashCode()%arr.length;
if(arr[a]!=null){
LinkedList list = arr[a];
for(int i=0;i<list.size();i++){
SxtEntry e=(SxtEntry) list.get(i);
if(e.key.equals(key)){
return e.value;
}
}
}
return null;
}
public static void main(String[] args){
SxtMap002 m=new SxtMap002();
m.put("张三",new Wife("杨幂"));
m.put("张三",new Wife("李四"));
Wife w=(Wife) m.get("张三");
System.out.println(w.name);
}
}
class Wife{
String name;
public Wife(String name){
this.name=name;
}
}