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合并去重的更多相关文章

  1. JAVA List<> 合并去重

    List<A>和List<B>,A/B中均没有重复的,现在保证A/B合并为C,且C中没有重复的. 参考http://blog.csdn.net/secondjanuary/ar ...

  2. PHP数组合并+与array_merge的区别分析 & 对多个数组合并去重技巧

    PHP中两个数组合并可以使用+或者array_merge,但之间还是有区别的,而且这些区别如果了解不清楚项目中会要命的! 主要区别是两个或者多个数组中如果出现相同键名,键名分为字符串或者数字,需要注意 ...

  3. java poi 合并单元格

    java poi 合并单元格 2017年03月29日 16:39:01 翠烟你懊恼 阅读数:26561   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.n ...

  4. 两个List合并去重

    今天遇到一个合并去重问题,从网上搜索一样总结出来两个比较简单的方法,这里去重是只能取出地址相同的数据,例如:如果两个字符串的值相同但都是单独new出来的这样去不了 @Test public void ...

  5. Java数组合并方法学习。

    参考博客: https://blog.csdn.net/liu_005/article/details/72760392 https://blog.csdn.net/jaycee110905/arti ...

  6. linux shell文件合并 去重 分割

    1,合并+去重+分割 转载:shell 文件合并,去重,分割 - kakaisgood - 博客园 (cnblogs.com) 第一:两个文件的交集,并集前提条件:每个文件中不得有重复行1. 取出两个 ...

  7. java实现合并两个已经排序的列表

    相对于C++来说,Java的最大特点之一就是没有令人困惑的指针,但是我们不可否认,在某些特定的情境下,指针确实算的上一把利刃.虽然Java中没有明确定义出指针,但是由于类的思想,我们可以使用class ...

  8. Java文件合并

    文件分割与合并是一个常见需求,比如:上传大文件时,可以先分割成小块,传到服务器后,再进行合并.很多高大上的分布式文件系统(比如:google的GFS.taobao的TFS)里,也是按block为单位, ...

  9. Java+XSL合并多个XML文件

    使用 Java 解析 XML 文件有许多成熟的工具,如 dom4j 等等.但在一些场景中,我们可能使用 Ant.Maven 等构建工具对多个 XML 文件进行合并,我们希望可以直接通过脚本文件,或者简 ...

随机推荐

  1. CacheHelper

    public static ObjectCache Cache { get { return MemoryCache.Default; } } public static bool TryGetCac ...

  2. MySQL字符集转换(latin1到utf8)

    http://blog.chinaunix.net/uid-25266990-id-3344584.html

  3. Prince2七大流程之项目准备

    Prince2七大流程之项目准备     今天我们正式进入七大流程的第一个流程学习,项目准备流程.决定项目是否值得做,是否值得启动.通过回答"是否有一个可交付的.值得做的项目?"这 ...

  4. Uva 1630 折叠串

    题目链接:https://uva.onlinejudge.org/external/16/1630.pdf 题意:折叠串,给一个字符串,相同部分可以折叠,折叠可以嵌套.求最短长度的一种折叠方法.括号和 ...

  5. VS配置路径和宏

    http://blog.csdn.net/puttytree/article/details/7838419

  6. break continue return

    break 通常用在循环语句和开关语句中,当break语句用于do-while.for.while循环语句中时,可使程序终止循环而执行循环后面的语句, 通常break语句总是与if语句联在一起,即满足 ...

  7. Android Gallery

    xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android= ...

  8. Centos7安装图形界面

    安装好字符操作系统后,使用网络安装(网络安装比较简单,不需要配置yum文件): yum groupinstall "GNOME Desktop" -y startx centos7 ...

  9. Oracle创建数据库

    Oracle创建数据库有三种方式:一.使用DBCA(Database Configuration Assistant 数据库配置助手):二.使用 create database指令:三.在安装数据库软 ...

  10. 《与小卡特一起学Python》 Code2

    下边是一个猜数字的小游戏: 几乎所有语言都这样做的…… here we go! import random secret = random.randint(1,99) guess = 0 tries ...