list的取差集

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了list的取差集相关的知识,希望对你有一定的参考价值。

参考技术A 工作中用到了list的取差集,发现还是挺好用的。

所以记录下。

需求list的方法说明备注

交集listA.retainAll(listB);  listA内容变为listA和listB都存在的对象        listB不变

差集listA.removeAll(listB);  listA中存在的listB的内容去重           listB不变

并集listA.removeAll(listB);

listA.addAll(listB);

为了去重,listA先取差集,然后追加全部的listBlistB不变

List的 并集交集差集操作

package com.zheting.collection.list;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

/**
 * List基本操作:
 * 01.集合的并集
 * 02.集合的交集
 * 03.集合的差集
 * 04.集合去重
 * 05.数组转换成集合
 * 06.集合转换成数组
 */
public class TestArrayList {
	//List集合的并集 addAll
	public void test01(){
		List<String> list_01 = new ArrayList<String>();
			list_01.add("a");
			list_01.add("b");
			list_01.add("c");
		List<String> list_02 = new ArrayList<String>();
			list_02.add("d");
			list_02.add("e");
			list_02.add("f");
			list_02.add("a");
		list_01.addAll(list_02);//a, b, c, d, e, f, a
		this.printList(list_01);
	}
	
	//List集合的交集 retainAll
	public void test02(){
		List<String> list_01 = new ArrayList<String>();
			list_01.add("a");
			list_01.add("b");
			list_01.add("c");
		List<String> list_02 = new ArrayList<String>();
			list_02.add("b");
			list_02.add("e");
			list_02.add("f");
			list_02.add("a");
		list_01.retainAll(list_02);//a, b
		this.printList(list_01);
	}
	
	//List集合的差集 removeAll
	public void test03(){
		List<String> list_01 = new ArrayList<String>();
			list_01.add("a");
			list_01.add("b");
			list_01.add("c");
		List<String> list_02 = new ArrayList<String>();
			list_02.add("b");
			list_02.add("e");
			list_02.add("f");
			list_02.add("a");
		list_01.removeAll(list_02);//c
		this.printList(list_01);
	}
	
	//List集合去重
	public void test04(){
		List<String> list_01 = new ArrayList<String>();
			list_01.add("a");
			list_01.add("b");
			list_01.add("c");
			list_01.add("d");
			list_01.add("b");
			list_01.add("c");
		List<String> list_02 = new ArrayList<String>();
		for (String str : list_01) {
			if(!list_02.contains(str)){
				list_02.add(str);
			}
		}
		this.printList(list_02);//a,b,c,d
	}
	
	//数组转换成集合
	public void test05(){
		String[] strs = {"a","b","c","d"};
		List<String> list = Arrays.asList(strs);
		this.printList2(list); //a, b, c, d
	}
	
	//集合转换成数组
	public void test06(){
		List<String> list = new ArrayList<String>();
			list.add("a");
			list.add("b");
			list.add("c");
			list.add("d");
		Object[] strs = list.toArray();
		String str = "";
		for (Object string : strs) {
			str += string + ", ";
		}
		System.out.println(str);
	}
	
	//输出一个集合中的元素
	public void printList(List list){
		String str = "";
		for (Object object : list) {
			str += object + ", ";
		}
		System.out.println(str);
	}
	
	//输出一个集合中的元素
	public void printList2(List list){
		String str = "";
		Iterator iterator = list.iterator();
		while(iterator.hasNext()) {
			str += iterator.next() + ", ";
		}
		System.out.println(str);
	}
	
	public static void main(String[] args) {
		new TestArrayList().test05();
	}
}

  

以上是关于list的取差集的主要内容,如果未能解决你的问题,请参考以下文章

两个list求差集

求2个list的差集

java找到两个list的交集并集差集

两个list,并集交集差集

java如何使用代码求两个list集合的差集呢?

Java list 取差集