利用HashSet给list去重[通俗易懂]

利用HashSet给list去重[通俗易懂]如果有一个string的list要去重,那么可以用以下代码:List<String>orgIds=……..//orgIds即可能存在重复数据的String的集合//利用HashSet去重Set<String>set=newHashSet<String>(orgIds);orgIds=newArrayList<String…

大家好,又见面了,我是你们的朋友全栈君。

如果有一个string的list要去重,那么可以用以下代码:

List<String> orgIds=........//orgIds即可能存在重复数据的String的集合
//利用HashSet去重
Set<String> set = new HashSet<String>(orgIds);
orgIds = new ArrayList<String>(set);

其原理是,HashSet实现了Set接口,它不允许集合中出现重复元素。但如果不是String的集合而是对象的集合,就不能简单的用上诉方法来去重了。因为HashSet判断是否重复,对象是否相同,其实是调用了对象的hashCode和equals方法来判断是否相同。例如:

//s和t是相同的。
//而StringBuffer对象自身没有hashCode方法,继承Object的默认方法获得的hashcode是对象地址,故而sb和tb不同。
String s=new String("OK");//hashcode: 3030 
String t="Ok"; /hashcode: 3030 
StringBuffer sb=new StringBuffer(s); //hashcode:20526976 
StringBuffer tb=new StringBuffer(t); //hashcode:20527144

综上,引申出来。如果我们自定义了一个对象,也可以利用HashSet来去重,只需要定义该对象的equals和hashCode方法,可定义为该对象的所有属性都相同才为相同,也可定义为ID相同则视为对象相同,根据需要定义即可。需要注意的是,自定义的equals和hashCode必须兼容,即:

public class Employee{   
       public int id;   
       public String name="";   
       //相同id对象具有相同hashCode
       public int hashCode(){    
              return id;   
       }   
       //则equals必须比较id   
        public boolean equals(Employee x){   
              if(this.id==x.id) return true;   
              else return false;   
       }   
}  

参考引用:https://www.cnblogs.com/runwulingsheng/p/5208762.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141399.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月25日 下午11:20
下一篇 2022年5月25日 下午11:40


相关推荐

  • 【Win10系统】Win10系统无线网消失,更改适配器只有以太网,找不到WLAN怎么解决?

    【Win10系统】Win10系统无线网消失,更改适配器只有以太网,找不到WLAN怎么解决?已经快三天了,不想重装系统,前天早上起床打开电脑突然发现右下角网络只有一个飞行模式,旁边的WLAN消失了,到网络属性中更改适配器设置也没找到,几乎试了网上所有的解决办法。1.网络重置2.cmd命令netshwinsockreset3.关机-断电-拔电池或者插拔网卡(未尝试,还要拆螺丝,麻烦)4.services.msc启动那几个服务项5.开飞行模式,重启,关飞行模式6.CClea…

    2022年7月11日
    79
  • 目标检测中的样本不平衡处理方法——OHEM, Focal Loss, GHM, PISA

    目标检测中的样本不平衡处理方法——OHEM, Focal Loss, GHM, PISA1 前言目前 计算机视觉中的性能最好的目标检测方法主要分为两种 one stage 和 two stage 方法 two stage 方法分为两步 第一步为候选区域生成阶段 Proposalstag 通过如 SelectiveSea EdgeBoxes 等方法可以生成数量相对较小候选目标检测框 第二步为分类与回归阶段 对第一阶段生成的 CandiateProp 进行分类和位置

    2026年3月17日
    2
  • dvwa安装教程(LNMP一套Linux+Nginx+MariaDB+PHP)

    dvwa安装教程(LNMP一套Linux+Nginx+MariaDB+PHP)dvwa 靶场介绍

    2026年3月19日
    2
  • 如何关闭JxBrowser,正确退出JxBrowser的方法

    如何关闭JxBrowser,正确退出JxBrowser的方法一 问题描述 nbsp 在 JAVAFX 中使用 JxBrowser 启动之后打开网页 如何这个时候 直接关了窗口 Java 进程并不会立马就停掉 而是会等一会 这就是由于 JxBrowser 还没有关闭导致的 nbsp 二 解决方法 nbsp 只要执行以下代码就可以关闭 JxBrowser newThread newRunnable Override publicvoidru

    2026年3月16日
    2
  • 网络安全:小心MSHTA漏洞为黑客开启远程控制之门

    网络安全:小心MSHTA漏洞为黑客开启远程控制之门这是一个可以让黑客欣喜若狂的新漏洞,一旦该漏洞被激活,就会有大量计算机成为黑客手中的肉鸡,被人远程控制不可避免……  微软的Windows操作系统在进行了短暂的“喘息”后,近日又在攻击爱好者不懈努力下,被成功找出几个高危的系统安全漏洞,而MicrosoftWindowsMSHTA脚本执行漏洞就是其中的重要一员。  安全公告牌  MSHTA即HTA,此处的MS主要用于强调这是微软的

    2022年7月15日
    18
  • python抓取抖音用户画像,摩羯天蝎居然刷得最多?「建议收藏」

    python抓取抖音用户画像,摩羯天蝎居然刷得最多?「建议收藏」日刷抖音三百条,悠悠一笑乐逍遥,夜深忽醒窗外事,不知今夕是何年。要从上个月说起,那天晚上准备睡觉了,然后朋友突然发来一个抖音热门视频。一向一本正经苟于工作的我,竟然沉醉于小姐姐的甜蜜的笑容,加之想到抖音好像周边的人都在玩,让我不由地也下了抖音,则立马陶醉于这抖音真对味,这世界真新鲜,这世上竟有如此光鲜亮丽的美女帅哥萌娃的感叹之中,简直没舍得合上眼。等我准备合眼的时候,看了时间,已经早上4点半…

    2022年6月9日
    54

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号