本教程操作环境:windows7系统、java10版,DELL G3电脑。
1.AbstractMap
AbstractMap是一个抽象类,在具体的 Map 的实现类和接口之间定义的一层抽象,为了就是服务一些用的函数。
AbstractMap
publicabstractclassAbstractMap<K,V>implementsMap<K,V>{
}
2.HashMap
HashMap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力。
//HashMap维护的哈希表
transientNode<K,V>[]table;
//对key进行处理
staticfinalinthash(Objectkey){
inth;
return(key==null)?0:(h=key.hashCode())^(h>>>16);
}
//要想看HashMap的散列函数就必须找到put方法
publicVput(Kkey,Vvalue){
returnputVal(hash(key),key,value,false,true);
}
TreeMap
TreeMap是一个基于红黑树的有序的Map,继承自AbstractMap抽象类,实现了NavigableMap接口,这个接口又继承了SortedMap。
finalVputVal(inthash,Kkey,Vvalue,booleanonlyIfAbsent,
booleanevict){
Node<K,V>[]tab;Node<K,V>p;intn,i;
if((tab=table)==null||(n=tab.length)==0)
n=(tab=resize()).length;
if((p=tab[i=(n-1)&hash])==null){//注意这一句的(n-1)&hash就是数组的小标
...
}
3.TreeMap
TreeMap 是一个基于红黑树的有序的 Map ,实现了 NavigableMap 接口,这个接口又继承了 SortedMap 。
finalVputVal(inthash,Kkey,Vvalue,booleanonlyIfAbsent,
booleanevict){
Node<K,V>[]tab;Node<K,V>p;intn,i;
if((tab=table)==null||(n=tab.length)==0)
n=(tab=resize()).length;
if((p=tab[i=(n-1)&hash])==null){//注意这一句的(n-1)&hash就是数组的小标
...
}
4.map架构
原文来自:https://www.py.cn
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END


















































暂无评论内容