JAVA List 数组取交集和差集

今天无意间去菜鸟教程( www.runoob.com )翻了一下JAVA基础,发现了一个意外的惊喜,就是关于对两个List 集合进行取交集和差集的方法,感觉十分受用,因为自己在之前做项目的时候,确实有碰到过类似的需求,所以在此刻记录下来,与各位技术同行分享一下

1.取交集

/**
* @Description: 取交集 
*/
public static void listJiaoJI(){
	List<String> list1 = new ArrayList<String>();
	list1.add("names");
	list1.add("age");
	list1.add("sex");
	list1.add("weight");
	
	List<String> list2 = new ArrayList<String>();
	list2.addAll(list1);
		
	list2.remove(1);
	list2.remove("age");
		
	list2.add("job");
	list2.add("family");
		
	System.out.println("list1: \n"+String.join(",", list1));
	System.out.println("list2: \n"+String.join(",", list2));

	// retainAll 表示取集合中有相同的值
	boolean contain = list2.retainAll(list1);
	System.out.println("是否含有交集:"+contain+"\n交集: "+String.join(",", list2));
}

取交集运行结果:

list1: 
names,age,sex,weight
list2: 
names,sex,weight,job,family
是否含有交集:true
交集: names,sex,weight

 

1.取差集

/**
* @Description: 取差集 
*/
public static void listChaJi(){
    List<Integer> list1 = new LinkedList<Integer>();
    list1.add(88);
    list1.add(99);
    list1.add(1566);
    list1.add(352);

    List<Integer> list2 = new LinkedList<Integer>();
    list2.addAll(list1);

    list2.remove(1);

    list2.add(666);
    list2.add(111);

    System.out.println("list1: ");
    for(int i = 0; i < list1.size(); i++ ){
	if(0 == i){
	    System.out.print(list1.get(i));
	    continue;
	}
	System.out.print(","+list1.get(i));
    }

    System.out.println("\nlist2: ");
    for(int i = 0; i < list2.size(); i++ ){
	if(0 == i){
	    System.out.print(list2.get(i));
	    continue;
	}
	System.out.print(","+list2.get(i));
    }

    list2.removeAll(list1);

    System.out.println("\n差集: ");
    for(int i = 0; i < list2.size(); i++ ){
	if(0 == i){
	    System.out.print(list2.get(i));
	    continue;
	}
	System.out.print(","+list2.get(i));
    }
}

 

取差集运行结果:

list1: 
88,99,1566,352
list2: 
88,1566,352,666,111
差集: 
666,111

 

我在取交集的时候用的是ArrayList,在取差集的时候用的是LinkedList,这两个集合的共同之处是都实现了java.util.List 接口,所以,哪怕把ArrayList 或 LinkedList 替换成其他实现了java.util.List 接口的集合,上面的代码也是受用的,具体实现了java.util.List 接口的集合有如下几种(取自jdk 1.8 API 文档):

实现List 接口的集合

学无止境,生生不息,下次见。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值