List集合中的交集 并集和差集
List集合求交集 并集 差集
两种方法求集
Set集合
交集 两个集合中有相同的元素 抽取出来的数据就是为交集
@Test
public void testSet1(){
Set<String> set1 = new HashSet<>();
Set<String> set2 = new HashSet<>();
set1.add("a");
set1.add("b");
set1.add("c");
set2.add("c");
set2.add("d");
set2.add("e");
// 交集
set1.retainAll(set2);
System.out.println("交集是" + set1); // 交集是 c
}
并集 两个集合中去掉重复的数据就是并集
@Test
public void testSet2(){
Set<String> set1 = new HashSet<>();
Set<String> set2 = new HashSet<>();
set1.add("a");
set1.add("b");
set1.add("c");
set2.add("c");
set2.add("d");
set2.add("e");
// 并集
set1.addAll(set2);
System.out.println("并集是" + set1); // 并集是[a b c d e]
}
差集 第一个集合中的数据在第二个集合中有重复时,去掉重复数据的第一个集合就是差集
@Test
public void testSet3(){
Set<String> set1 = new HashSet<>();
Set<String> set2 = new HashSet<>();
set1.add("a");
set1.add("b");
set1.add("c");
set2.add("c");
set2.add("b");
set2.add("e");
// 差集
set1.removeAll(set2);
System.out.println("差集是" + set1); // 差集是 a b 去掉set1中属于set2的元素
}
Java8最大的亮点就是lambda表达式
Lambda表达式
@Test
public void test1(){
List<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(2);
list1.add(3);
List<Integer> list2 = new ArrayList<>();
list2.add(3);
list2.add(4);
list2.add(5);
System.out.println("==========求交集==========");
List<Integer> list = list1.stream().filter(t->list2.contains(t)).collect(Collectors.toList());
list.stream().forEach(System.out::println);
System.out.println("==========求差集==========");
list = list1.stream().filter(t-> !list2.contains(t)).collect(Collectors.toList());
list.stream().forEach(System.out::println);
System.out.println("==========求并集==========");
list.addAll(list1);
list.addAll(list2);
list = list.stream().distinct().collect(Collectors.toList());
list.stream().forEach(System.out::println);
}
临渊慕鱼,不如退而结网