Java中的Set集合接口实现插入对象不重复的原理
来源:互联网 发布:php本地环境搭建 编辑:程序博客网 时间:2024/06/15 18:51
在java的集合中,判断两个对象是否相等的规则是:
1)、判断两个对象的hashCode是否相等 。
如果不相等,认为两个对象也不相等,完毕
如果相等,转入2)
(这一点只是为了提高存储效率而要求的,其实理论上没有也可以,但如果没有,实际使用时效率会大大降低,所以我们这里将其做为必需的。后面会重点讲到这个问题。)
2)、判断两个对象用equals运算是否相等 。
如果不相等,认为两个对象也不相等
如果相等,认为两个对象相等(equals()是判断两个对象是否相等的关键)
对于一般类的对象(除String等封装类型对象外):
若普通类没有重写hashcode()和equals()方法,,那么其对象在比较时,是继承的object类中的hashcode()方法,object类中的hashcode()方法是一个本地方法,对该方法的返回值进行比较时,比较的是对象的地址(引用地址),使用new方法创建内容相同的对象,两次生成的当然是不同的对象。除非重写hashcode()方法。在object类中定义的equals()方法也是对对象地址的比较。一句话总结:若不重写普通类的hashcode()和equals()方法,在Set集合中对象引用地址不一样,对象即不重复。
对于String等对象(String、Integer、Double····等等):
由于这些封装类本身已经重写了hashcode()方法,并且重写的方法的返回值跟对象的内容相关,而不是跟引用地址相关。这些封装类中的equals()方法同样进行了重写,比较的是对象的内容,而非引用地址。一句话总结:String等类的对象在集合中均比较他们的内容,内容相同则覆盖已存在的对象。
转载自--http://www.cnblogs.com/zhangzongle/p/5479726.html
- Java中的Set集合接口实现插入对象不重复的原理
- Java中的Set集合接口实现插入对象不重复的原理
- Set集合实现元素不重复原理
- Java集合类补充—Set中实现元素不重复的原理
- Set 不重复实现原理
- Set 不重复实现原理
- Set 不重复实现原理
- java 集合 Set 插入重复元素
- 《JAVA集合中的Set接口》
- JDK源码阅读之Set不重复元素集合接口
- java 集合框架-ArrayList存储不重复的自定义对象
- java集合中的List Set 接口的区别
- Java集合架构--Set接口的几个具体实现类
- java中的集合之Set接口(三)
- java集合-Set接口
- 集合中的 对象的去重复
- Java中的Set接口,了解如何判断是否重复元素。
- Java集合List和Set的原理
- GitHub和GitLab的区别
- 解析Spark Executor内幕,详解CoarseGrainedExecutorBackend
- C++自动生成身份证号代码
- 解析JSON
- html回顾及vue.js在html中使用(三)
- Java中的Set集合接口实现插入对象不重复的原理
- HDU-2222 Keywords Search AC自动机模板题
- 笨方法学Python 习题 42: 对象、类、以及从属关系
- Matlab路径问题导致无法加载lib解决方案
- Puzzle UVA
- Makefile变态规则。。。
- C# 访问并打开局域网文件夹
- 使用Java让android手机自动执行重复重启
- 大作业8(直方图绘制)