Java集合学习5:Map-HashMap、Hashtable

举报
bdi洲 发表于 2022/05/20 00:35:09 2022/05/20
【摘要】 说白了,Map就是 键值对,存储一对数据 。允许用null作为key或者value。 Map接口使用 map的遍历注意keySet()方法是得到的key的set形式的集合,所以要以set来接...

在这里插入图片描述
说白了,Map就是 键值对,存储一对数据 。允许用null作为key或者value。

在这里插入图片描述

Map接口使用

在这里插入图片描述

  • map的遍历
  • 注意keySet()方法是得到的key的set形式的集合,所以要以set来接着。
  • 在这里插入图片描述

在这里插入图片描述

  • entrySet(),Entry是映射对,有key也有value。
  • 方法代码:

在这里插入图片描述
Set<Map.entry<String,String>> entries = map.entrySet();
for( Entry<String,String> entry : entries) {
System.out.println(entry.getKey()+ entry.getValue());
}
注意 entry是内部接口,所以需要map.entry。

在这里插入图片描述
在这里插入图片描述
效率是第二个高,因为第一个key拿到了还得遍历进行拿value的操作,而第二个直接拿了 全部了键值对一次性把key和value都拿了。

HashMap

基于哈希表 的Map实现。
在这里插入图片描述
默认构造初始容量是16,加载因子是0.75.也就是 当超过百分之75,开始扩容,这就是加载因子的意思。
在这里插入图片描述
那么students.put(new Student(“沙和尚”,102),“南京”);
是可以加进来的,这下就有两个沙和尚了。
其实是因为对象内存地址不一样就进来了,因为new是在堆空间进行了。

使用key可hashcode和equals作为 重复判断,默认hashcode是以地址来计算的。
如果想一样的话不给加进来,那么就需要重写hashcode和equals方法。
在这里插入图片描述
在eclipse 中可以直接使用软件 生成重写的。
在这里插入图片描述
这个就是重写的方法。
在这里插入图片描述
在这里插入图片描述

HashMap源码分析

在这里插入图片描述
左移四位。是因为 底层二进制最快 。

在这里插入图片描述
因为小于6的时候没必要变成树,因为元素太少了。

Hashtable

不允许null作为key或者是 value。
这个类用的不多 ,但是他的子类,Properties用的比较多。

TreeMap

实现了SortedMap接口 (是 Map的子接口),可以对key自动排序。
数据存储结构也是红黑树。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文章来源: blog.csdn.net,作者:洲的学习笔记,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_51484460/article/details/120837802

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。