利用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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • LCD 1602A

    LCD 1602A1.直接与Arduino相连2.通过转接板利用I2C的方式与Arduino相连1.直接与Arduino相连直接与Arduino相连的好处是不用现另外购买转接板,但这样造成的后果就是要大量占用Arduino的IO口。如果你的项目外接的传感器不多,那还好,但如果你需要外接很多个传感器或者其他配件,那你的IO口就会告急了~所需材料1xArduinoUNO1xLCD1…

    2022年9月22日
    2
  • 评教,路上的风景更美「建议收藏」

    评教,路上的风景更美

    2022年1月30日
    35
  • 如何清理电脑中c盘的垃圾_计算机基本组成

    如何清理电脑中c盘的垃圾_计算机基本组成系统盘,也就是我们常说的C盘!必须要保持足够的存储空间,才能够确保电脑不会运行卡顿,或者出现一些系统性的问题。其实,我们安装系统的时候,C盘最多也就被占用20G左右的空间。但是C盘作为系统盘,电脑运行时所产生的系统缓存文件、垃圾文件以及程序运行文件等等,都会不断的占用C盘的空间,使得C盘越来越小,电脑越用越卡!今天大白菜就和大家分享4招c盘清理方法,让大家的C盘可以腾出更多的空间,保证电脑运行更加…

    2022年8月31日
    8
  • Jquery 插件库

    Jquery 插件库

    2021年9月16日
    56
  • 填充因子_太阳能电池填充因子计算公式

    填充因子_太阳能电池填充因子计算公式创建索引时有个选项FILLFACTOR这个参数的作用是:在创建索引的时候每页写入多少数据,如FILLFACTOR=80即表示每页写入80%的数据,空余20%,不写默认是100CREATEINDEX

    2022年8月2日
    6
  • Java sdk安装及配置[通俗易懂]

    Java sdk安装及配置[通俗易懂]1.安装JavaSDK开发环境。首先去官网下载JavaSDK,http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,下载完成之后,开始安装。点击下一步,安装完成。2.配置JavaSDK环境变量单击“计算机-属性-高级系统设置”,单击“环境变

    2022年7月9日
    23

发表回复

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

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