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);
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM