本教程操作环境: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
暂无评论内容