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);
}
posted @ 2021-04-07 17:09  Lernen  阅读(1493)  评论(0编辑  收藏  举报