Java List合并去重
List A和B
A.removeAll(B);
A.addAll(B);
例如有如下实体类:
/**
* hashset是如何保持元素的唯一性呢?
* 是通过元素的hashcode和equals来表示:
* 如果hashCode值一样,则比较equals是否为true
* 如果hashCode值不一样,不用比较equals
*/
/**
* List是如何集合中元素相同的呢?
* 是通过元素的hashcode和equals来表示:
* 如果hashCode值一样,则比较equals是否为true
* 如果hashCode值不一样,不用比较equals
*/
public class UserTable {
private String linkdoodid;
private String linkdoodname;
public UserTable() {
super();
}
public UserTable(String linkdoodid,String linkdoodname){
supert();
this.linkdoodid=linkdoodid;
this.linkdoodname=linkdoodname;
}
public String getLinkdoodid() {
return linkdoodid;
}
public void setLinkdoodid(String linkdoodid) {
this.linkdoodid = linkdoodid == null ? null : linkdoodid.trim();
}
public String getLinkdoodname() {
return linkdoodname;
}
public void setLinkdoodname(String linkdoodname) {
this.linkdoodname = linkdoodname == null ? null : linkdoodname.trim();
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof UserTable)) {
return false;
}
UserTable userTable = (UserTable) obj;
return this.linkdoodid.equals(userTable.linkdoodid);
}
@Override
public int hashCode() {
return linkdoodid.hashCode();
}
}
测试:
public class HashSetTest {
public static void main(String[] args) {
//List
List<UserTable> listA=new ArrayList<UserTable>();
listA.add(new UserTable("A1001","LJ"));
listB.add(new UserTable("B1002","MH"));
List<UserTable> listB=new ArrayList<UserTable>();
listB.add(new UserTable("B1002","SM"));
listB.add(new UserTable("C1001","TM"));
listA.removeAll(listB);//由于UserTable的hashCode和equal 都是以linkdoodid 来判断,所以“B1002”算重复元素
listA.addAll(listB);
//HashSet
HashSet<UserTable> hs = new HashSet<UserTable>();
hs.add(new UserTable("a1", 20));
hs.add(new UserTable("a2", 30));
hs.add(new UserTable("a3", 40));
hs.add(new UserTable("a3", 40));
Iterator<Person> iterator = hs.iterator();
while(iterator.hasNext()){
Person p = iterator.next();
System.out.println(p.getName()+" "+p.getAge());
}
}
}
Java List合并去重的更多相关文章
- JAVA List<> 合并去重
List<A>和List<B>,A/B中均没有重复的,现在保证A/B合并为C,且C中没有重复的. 参考http://blog.csdn.net/secondjanuary/ar ...
- PHP数组合并+与array_merge的区别分析 & 对多个数组合并去重技巧
PHP中两个数组合并可以使用+或者array_merge,但之间还是有区别的,而且这些区别如果了解不清楚项目中会要命的! 主要区别是两个或者多个数组中如果出现相同键名,键名分为字符串或者数字,需要注意 ...
- java poi 合并单元格
java poi 合并单元格 2017年03月29日 16:39:01 翠烟你懊恼 阅读数:26561 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.n ...
- 两个List合并去重
今天遇到一个合并去重问题,从网上搜索一样总结出来两个比较简单的方法,这里去重是只能取出地址相同的数据,例如:如果两个字符串的值相同但都是单独new出来的这样去不了 @Test public void ...
- Java数组合并方法学习。
参考博客: https://blog.csdn.net/liu_005/article/details/72760392 https://blog.csdn.net/jaycee110905/arti ...
- linux shell文件合并 去重 分割
1,合并+去重+分割 转载:shell 文件合并,去重,分割 - kakaisgood - 博客园 (cnblogs.com) 第一:两个文件的交集,并集前提条件:每个文件中不得有重复行1. 取出两个 ...
- java实现合并两个已经排序的列表
相对于C++来说,Java的最大特点之一就是没有令人困惑的指针,但是我们不可否认,在某些特定的情境下,指针确实算的上一把利刃.虽然Java中没有明确定义出指针,但是由于类的思想,我们可以使用class ...
- Java文件合并
文件分割与合并是一个常见需求,比如:上传大文件时,可以先分割成小块,传到服务器后,再进行合并.很多高大上的分布式文件系统(比如:google的GFS.taobao的TFS)里,也是按block为单位, ...
- Java+XSL合并多个XML文件
使用 Java 解析 XML 文件有许多成熟的工具,如 dom4j 等等.但在一些场景中,我们可能使用 Ant.Maven 等构建工具对多个 XML 文件进行合并,我们希望可以直接通过脚本文件,或者简 ...
随机推荐
- OpenCart中文乱码解决方法
遇到在列表页面调用部分截取中文内容的时候,被截取的内容有乱码,改数据库的编码没用,后来发现:utf8_substr(strip_tags(html_entity_decode($result['d ...
- SQL Server 在task manager里面显示CPU 使用率过高
发现一篇好文章 https://mssqlwiki.com/2012/10/04/troubleshooting-sql-server-high-cpu-usage/
- 刚知道的android属性
在EditText中当设置的高度是wrap_parent,但是随着我们输入的越来越多,编辑框会被拉伸的很丑,所以就用了maxLines属性,设置maxLines="2"说明最多输入 ...
- placeholder修改字体和颜色
textField.placeholder = @"username is in here!"; [textField setValue:[UIColor redColor] fo ...
- webapi aspose导出excel表格
API 通过get请求,注意用到一个[FromUri]特性,使GET接收实体参数 /// <summary> /// 导出 /// </summary> /// <par ...
- Java SE 基础:注释
Java SE 基础:注释 一.注释定义 用于解释说明程序的文字. 二.注释的作用 1.解释说明程序,提高程序的可读性 2.可以帮助我们调试程序:通过注释代码块,检测错误位置 三.格式 1.单行注释 ...
- ABAP代码编辑器设置--界线
ABAP编辑器每行允许的最大字符数: Utilities->Settings打开选项卡: 勾选:Downward-Compat.line Length(72) 设置后看到的效果: 设置步骤:
- javascript 组合
1. 大数组中有m个元素,抽取其中的n个进行组合. var combination = function(arr, num){ var r=[]; (function f(t,a,n) { ) { r ...
- 广播Broadcast Receiver
广播的类型: 1.标准广播(Normal broadcat) 完全异步执行的广播,所有广播接收器同一时间接收广播消息. 效率高,但无法被截断. 2.有序广播 同步执行的广播,同一时刻只能有一个广播接收 ...
- Query Designer:Condition,根据KeyFigure值来过滤数据
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...