java 双列集合Map及其子实现类
来源:互联网 发布:java bigdecimal最大值 编辑:程序博客网 时间:2024/06/05 19:02
Map接口:
将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口。
Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。映射顺序 定义为迭代器在映射的 collection 视图上返回其元素的顺序。某些映射实现可明确保证其顺序,如 TreeMap 类;另一些映射实现则不保证顺序,如 HashMap 类。
注:将可变对象用作映射键时必须格外小心。当对象是映射中某个键时,如果以影响 equals 比较的方式更改了对象的值,则映射的行为将是不确定的。此项禁止的一种特殊情况是不允许某个映射将自身作为一个键包含。虽然允许某个映射将自身作为值包含,但请格外小心:在这样的映射上 equals 和 hashCode 方法的定义将不再是明确的。
1.Map中的key是如何确保重复验证的快速性及key值的唯一性呢?
在解剖HashMap之间,需要先简单的了解Hash算法,Hash算法一般也成为散列算法,通过散列算法将任意的值转化成固定的长度输出,该输出就是散列值,这是一种压缩映射,也就是,散列值的空间远远小于输入的值空间。其实Hash算法产生的目的很单纯,其发明的目的是提高海量数据的查找速度。
简单的说,hash算法的意义在于提供了一种快速存取数据的方法,它用一种算法建立键值与真实值之间的对应关系,(每一个真实值只能有一个键值,但是一个键值可以对应多个真实值),这样可以快速在数组等里面存取数据。
HashMap的put原理是这样的:
1、首先对key采用hashCode()方法进行散列化,就是将key转换生成一个int值,相同的key肯定会生成相同的int值,并对该int值进行hash计算得到hash值。
2、通过hash值得到Entry数组的下标,然后通过该下标,得到已经存入的数据,将已经存入的数据的key和hash进行比对,若相同证明是重复,则忽略。
3、若不相同,则通过addentry()方法将数据存入该数组的下标中,同时存入的还有key、hash值。
用一句话说来就是,通过待存入的key的hash值计算出数组的下标,并根据该下标提取已经存入的值,将两者进行比对,若相同则忽略,不同则put进去。
其余转载自:http://blog.csdn.net/qq_28261343/article/details/52627545
- java 双列集合Map及其子实现类
- Map集合及其实现类
- Map---Java双列集合
- Java集合--双列集合Map
- java--17--Map及其实现类与子接口
- java 单列集合list及其子实现类
- Java 单列集合Set及其子实现类
- Java双例集合下Map接口及其常用实现类
- Java基础之双列集合Map
- java日常学习:map双列集合
- 集合---Set及其子实现类
- java Map及其实现类
- 双列集合(Map)
- 双列集合Map
- 双列集合(Map)
- java集合Collection(单列集合)、Map(双列)
- 【我的Java笔记】Map集合(双列集合)
- 八,Java集合类(6)——Map接口及其实现类
- 特殊的二街魔方
- 以太坊挖矿软件反抽水-eth 免抽成破解收费小插件 (完美兼容 Claymore 原版内核,长沙矿工,圣骑士,挖矿专家,矿工队长)
- headfirst插入排序
- Could not find method on interface org.apache.ibatis.executor.statement.StatementHandler
- 后缀数组学习总结
- java 双列集合Map及其子实现类
- 小米推送,华为推送,个推,阿里云推送集成(服务端JAVA开发)
- 关于计算机学习的总结
- echarts2的一个地图demo
- matlab 爬虫抓取A股当日每笔成交数据
- 分享一个牛人给java初学者的建议(图文完整版)
- 【算法题】Manacher算法及其扩展
- mysql安装完成后修改默认密码
- jdk的环境变量配置