HashSet和TreeSet如何实现去重的呢?

书欣 Java经验 发布时间:2022-09-07 11:56:23 阅读数:7373 1
下文笔者讲述HashSet和TreeSet实现去重的原理分享,如下所示

HashSet去重原理

 
  由于hashSet底层是数组+链表+红黑树
  当我们增加数据时,首先使用hashCode()获取一个hash值
  然后根据hash值获取其索引(数组中的位置)
   当索引处,没有元素时,则直接放入
   当索引处,有元素,则使用equals对元素进行比较
        相同时,则不加入
		不相同时,则加入到元素后面 

TreeSet去重原理

   TreeSet的底层是TreeMap
    新增数据时,将存入map的key的位置
     value则为固定值PRESENT
   TreeSet中的元素是有序且不重复,由于TreeMap中key是有序且不重复的

   当在构造TreeSet时,如果传入一个Comparator匿名对象,实现的compare去重
    当返回0,则认为是相同的与元素,不添加
    当你没有传入一个Comparator匿名对象,则以你添加的对象实现的Compareable接口的compareTo方法来去重

    例:
	  新增值类型为String,会使用String中的compareTo()方法来比较两个String值是否相同,不同则添加。
     当传进去的对象是自己定义的类,必须要实现Comparable接口,即实现了comparaTo方法,否则会报ClassCast异常
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202209/16625230084373.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者