java中常见的map有哪些?

本教程操作环境: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
喜欢就支持一下吧
点赞10 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容