JAVA List 数组取交集和差集

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/TianXieZuoMaiKong/article/details/88237779

今天无意间去菜鸟教程( 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 接口的集合

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

展开阅读全文

没有更多推荐了,返回首页