HashSet与TreeSet对重复元素的判断不同之处
2014-09-19 17:18
246 查看
HashSet 的实现其实非常简单,它只是封装了一个 HashMap 对象来存储所有的集合元素,所有放入 HashSet 中的集合元素实际上由 HashMap 的 key 来保存,而 HashMap 的 value 则存储了一个 PRESENT,它是一个静态的 Object 对象。
HashSet 的绝大部分方法都是通过调用 HashMap 的方法来实现的,因此 HashSet 和 HashMap 两个集合在实现本质上是相同的。
于 HashSet 的 add() 方法添加集合元素时实际上转变为调用 HashMap 的 put() 方法来添加 key-value 对。HashMap 的 put() 方法首先调用.hashCode() 判断返回值相等,如果返回值相等则再通过 equals 比较也返回 true,最终认为key对象是相等的已经在HashMap中存在了。
TreeMap中调用put方法添加键值时,调用对象的它的 compareTo即实现Comparable(或 compare 即实现Comparator接口)方法对所有键进行比较,此方法返回0,则认为两个键就是相等的。
TreeSet添加元素的时候,调用compareTo或compare方法来定位元素的位置,也就是返回compareTo或compare返回0则认为是同一个位置的元素,即相同元素
HashSet 的绝大部分方法都是通过调用 HashMap 的方法来实现的,因此 HashSet 和 HashMap 两个集合在实现本质上是相同的。
HashMap 的 put 与 HashSet 的 add
于 HashSet 的 add() 方法添加集合元素时实际上转变为调用 HashMap 的 put() 方法来添加 key-value 对。HashMap 的 put() 方法首先调用.hashCode() 判断返回值相等,如果返回值相等则再通过 equals 比较也返回 true,最终认为key对象是相等的已经在HashMap中存在了。
TreeMap 的 put 与 TreeSet 的 add
TreeMap中调用put方法添加键值时,调用对象的它的 compareTo即实现Comparable(或 compare 即实现Comparator接口)方法对所有键进行比较,此方法返回0,则认为两个键就是相等的。TreeSet添加元素的时候,调用compareTo或compare方法来定位元素的位置,也就是返回compareTo或compare返回0则认为是同一个位置的元素,即相同元素
相关文章推荐
- HashSet与TreeSet对重复元素的判断不同之处
- HashSet中是如何判断元素是否重复的
- HashSet中是如何判断元素是否重复的
- java怎么判断两个Set 里的对象的值是否相同【两个set中的值是否相等】、java treeset和hashset如何判断元素是否相同【即对象是否完全相同;利用一个set去除重复元素】
- java: Set类及子类:TreeSet有序子类,HashSet无序子类:重复元素
- HashSet、TreeSet 去除Class重复的元素
- JAVA基础——HashSet怎样判断元素重复
- java 中HashMap、HashSet、TreeMap、TreeSet判断元素相同的几种方法比较
- HashMap、HashSet、TreeMap、TreeSet判断元素是否存在的逻辑
- HashSet对重复元素的判断
- HashSet中是如何判断元素是否重复的
- hashSet根据compareTo()方法的写法不同,hashSet是可以加入重复元素的(即使这2个元素的hashCode相同)。
- 【Java】HashMap、HashSet、TreeMap、TreeSet判断元素相同(代码整理)
- HashSet中是如何判断元素是否重复的
- TreeSet判断重复元素
- HashSet中是如何判断元素是否重复的
- JAVA基础之——HashSet中是如何判断元素是否重复的
- TreeSet判断重复元素解析及代码示例
- List去重方法&HashSet判断元素重复
- HashSet重复元素判断