Java集合操作(交集|差集|并集)

package list.list;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

/**
 * @ClassName: JavaListOps
 * @Description: 
 * @Author: xuezhouyi
 * @Version: V1.0
 **/
public class JavaListOps {
	public static void main(String[] args) {
		List<Integer> list1 = new ArrayList<>(Arrays.asList(1,2,3));
		List<Integer> list2 = new ArrayList<>(Arrays.asList(2,3,4));
		
		/* Java8的stream实现,不直接操作集合中的元素 */
		/* 交集 */
		List<Integer> collect1 = list1.stream().filter(e -> list2.contains(e)).collect(Collectors.toList());
		System.out.println(collect1);

		/* 差集 */
		List<Integer> collect2 = list1.stream().filter(e -> !list2.contains(e)).collect(Collectors.toList());
		System.out.println(collect2);

		/* 并集 */
		ArrayList<Integer> collect = new ArrayList<>();
		collect.addAll(list1);
		collect.addAll(list2);
		Set<Integer> collect3 = collect.stream().collect(Collectors.toSet());
		System.out.println(collect3);

		/* 普通实现,需要注意集合对元素的实际操作 */
		/* 交集 */
		list1.retainAll(list2);
		System.out.println(list1);

		/* 差集 */
		list1.removeAll(list2);
		System.out.println(list1);

		/* 并集 */
		list1.addAll(list2);
		System.out.println(list1);
	}
}
发布了54 篇原创文章 · 获赞 19 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/DataIntel_XiAn/article/details/100995399