ArrayList,HashSet判断对象是否重复的原理
2017-12-14 09:27
495 查看
HashSet集合由于是无序的,其判断唯一的依据是元素类型的hashCode与equals方法的返回结果。规则如下:
先判断新元素与集合内已经有的旧元素的HashCode值
如果不同,说明是不同元素,添加到集合。
如果相同,再判断equals比较结果。返回true则相同元素;返回false则不同元素,添加到集合。
所以,使用HashSet存储自定义类型,如果没有重写该类的hashCode与equals方法,则判断重复时,使用的是地址值,如果想通过内容比较元素是否相同,需要重写该元素类的hashcode与equals方法。
自定义类的equals方法仿照String重写hashcode() 代码如下
String类型的调用自身的hashCode方法+int类型的*较大的数即可
eclipse重写 equals() 和Hashcode()的快捷键:Alt+Shift+S
先判断新元素与集合内已经有的旧元素的HashCode值
如果不同,说明是不同元素,添加到集合。
如果相同,再判断equals比较结果。返回true则相同元素;返回false则不同元素,添加到集合。
所以,使用HashSet存储自定义类型,如果没有重写该类的hashCode与equals方法,则判断重复时,使用的是地址值,如果想通过内容比较元素是否相同,需要重写该元素类的hashcode与equals方法。
自定义类的equals方法仿照String重写hashcode() 代码如下
String类型的调用自身的hashCode方法+int类型的*较大的数即可
public int hashCode() { int h = 0; Iterator<E> i = iterator(); while (i.hasNext()) { E obj = i.next(); if (obj != null) h += obj.hashCode(); } return h; }
eclipse重写 equals() 和Hashcode()的快捷键:Alt+Shift+S
相关文章推荐
- Java中HashSet存储对象判断是否重复原理分析
- java怎么判断两个Set 里的对象的值是否相同【两个set中的值是否相等】、java treeset和hashset如何判断元素是否相同【即对象是否完全相同;利用一个set去除重复元素】
- 向HashSet插入自定义对象判断是否重复
- 【Java学习笔记】Hashset判断自定义对象是否重复
- 数组中的对象,判断是否有重复值、
- HashSet重复标准_重复判断的问题,颜色形同,坐标点距离不超过2,则认为是同一个点对象
- HashSet 中储存先判断对象的hash值 如果一样 在调用 对象equals方法判断是否是同一个对象
- HashSet中是如何判断元素是否重复的
- HashSet中是如何判断元素是否重复的
- HashSet中是如何判断元素是否重复的
- hashSet判断是否是同一对象
- ArrayList用equals方法判断对象是否在其中
- JAVA基础之——HashSet中是如何判断元素是否重复的
- HashSet中是如何判断元素是否重复的
- json对象中根据主键判断是否有重复数据
- HashSet小练习--判断人是否重复
- java判断List<T>对象是否唯一、去重复
- 判断集合元素唯一的原理-ArrayList的contains和HashSet的contains、add。Map接口、 集合嵌套
- HashSet 中储存先判断对象的hash值 如果一样 在调用 对象equals方法判断是否是同一个对象
- Java判断一个值,或者对象是否存在list集合中和去掉list集合中重复的元素