java 集合
来源:互联网 发布:生产矩阵作业指导书 编辑:程序博客网 时间:2024/06/06 04:24
Set究竟如何使数据不重复的呢?
在Set的实现中,使用了Map的key唯一性来确保Set的值不重复
利用了Hash算法来实现并达到这一目的。Hash算法又称为散列算法,其实Hash算法产生的目的很单纯,其发明的目的是提高海量数据的查找速度。
HashMap确实采用了Hash算法来提高查找key的速度,并且使用了equals()来判断是否重复
HashMap的put原理是这样的:
1、首先对key采用hashCode()方法进行散列化,就是将key转换生成一个int值,相同的key肯定会生成相同的int值,并对该int值进行hash计算得到hash值。
2、通过hash值得到Entry数组的下标,然后通过该下标,得到已经存入的数据,将已经存入的数据的key和hash进行比对,若相同证明是重复,则忽略。
3、若不相同,则通过addentry()方法将数据存入该数组的下标中,同时存入的还有key、hash值。
用一句话说来就是,通过待存入的key的hash值计算出数组的下标,并根据该下标提取已经存入的值,将两者进行比对,若相同则忽略,不同则put进去。
因为不同的key会产生不同的hash值,这也是为什么HashMap不排序的原因!
那么通过key提取值时,当然先要通过该key计算出hash值来,再通过这个hash值作为下标提取出对应的实体对象所容纳的value来。
同时加了必要的判断来确保提取出正确的数值来。
0 0
- Java集合:集合框架
- java集合---set集合
- JAVA 集合 的 集合
- 【集合】Java集合对比
- JAVA集合-Map集合
- JAVA集合-Set集合
- JAVA集合-List集合
- java集合------Map集合
- Java集合----List集合
- Java集合----Set集合
- Java集合----Map集合
- JAVA集合
- JAVA集合
- Java集合
- JAVA集合
- Java集合
- Java集合
- java 集合
- 用Java获得当前性能信息
- rabbitMQ学习笔记(二) 简单的发送与接收消息 HelloWorld
- cygwin使用体验
- 包含min函数的栈
- web.xml 中的context-param 、listener、 filter、servlet 加载顺序及其详解
- java 集合
- FPGA学习之 std_logic_vector与std_logic的区别
- rabbitMQ学习笔记(一) ubuntu12.4 与Windows 下rabbitMQ的安装
- iconv 文件编码转换
- java Date获取 年月日时分秒
- android Log 等级以及在Android Studio 的Logcat中过滤方法
- 秒懂冒泡排序
- iOS开发 UITextField的使用详解
- 浅谈JAVA中如何利用socket进行网络编程(二)