Java学习笔记整理-Map

集合:Collection
Map:键值对 key-value映射表(默认
HashMap
Hashtable
concurrentHashMap
LinkedHashMap
SortedMap(I)->TreeMap
1.HashMap
Map<String,String>map=new HashMap<String,String>();
//增删改查
map.put(“hehe”,“123”);//增加,返回被替换的value值
map.put(“hehe”,“1234”);//修改,返回被替换的value值
map.get(“hehe”);//通过key获取value
map.remove(“hehe”)//通过key删除 key-remove-返回被删除的value值
迭代map的三种方式
1.迭代所有key的set视图
Setkeys=map.keySet();
Iteratorit=keys.iterator();
while(it.hasNext()){
Integer key=it.next();
System.out.println(key+"="+map.get(key));
}
2.获得value对应的collection(List)视图
Collectioncol=map.values();
for(String str:col){
System.out.println(str);
}
3.entry:key/name-value键值关系
Set<Entry<String,User>>set=map.entrySet();
for(Entry<String,User>entry:set){
entry.getKey();–键值关系中的key
entry.getValue();–键值关系中大的value
}
HashMap的底层实现原理:
Hash->HashSet
HashSet就是HashMap的key的部分
TreeSet就是TreeMap的key的部分
HashSet的存储过程->HashMap的存储过程
1.hashCode()计算位置
2.位置上如果没有元素,直接加入
3.位置上有元素,对比判断equals()方法比较
a.相等,不添加
b.和位置上的链表每一个节点判断不相等,添加到链表末尾
因为链表访问效率很低,所以尽量使每个位置上在这里插入图片描述的链表,长度要短
这就要求容量大,但是考虑到空间使用率,容量不能无限大,默认初始容量jdk提供16
后期数据量太大,要扩容,但是不能存满再扩容
扩容:容量改变,原来集合中的元素复制到新扩容的集合中,要重新计算位置
需要消耗时间,所以不能频繁扩容
综合考虑,当集合存储到75%的时候,进行扩容一倍
结论:hashMap初始容量16
加载因子 0.75

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值