一、從兩個List集合取交集
在Java中,我們可以使用retainAll方法從兩個List集合中取交集。這個方法會返回一個boolean值來表示原來的集合是否受到了影響,即指示操作是否成功執行。
List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5)); List<Integer> list2 = new ArrayList<>(Arrays.asList(3, 4, 5, 6, 7)); boolean isList1Changed = list1.retainAll(list2); System.out.println("List1: " + list1); // Output: [3, 4, 5] System.out.println("List1 Changed: " + isList1Changed); // Output: true
上面的代碼中,我們使用了ArrayList的構造函數和Arrays.asList快捷方式來初始化了兩個List集合。接着,我們調用了list1的retainAll方法並傳入了list2來取得它們的交集。最後,我們打印了得到的交集和原始的list1是否受到了影響。由於list1被修改了,isList1Changed返回了true。
二、兩個List的交集
在Java 8及以後的版本中,我們可以使用stream和filter方法從兩個List中取得它們的交集。
List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5)); List<Integer> list2 = new ArrayList<>(Arrays.asList(3, 4, 5, 6, 7)); List<Integer> intersection = list1.stream() .filter(list2::contains) .collect(Collectors.toList()); System.out.println("Intersection: " + intersection); // Output: [3, 4, 5]
上面的代碼中,我們使用了和前面一樣的初始化方式來得到兩個List集合。接着,我們使用stream方法將list1變為一個Stream對象。然後,我們使用filter方法來過濾出和list2的元素相同的元素。最後,我們使用collect(Collectors.toList())來將結果收集到一個新的List集合中。
三、兩個List取差集
在Java中,我們可以使用removeAll方法從一個List集合中移除與另外一個List集合相同的元素來得到它們的差集。
List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5)); List<Integer> list2 = new ArrayList<>(Arrays.asList(3, 4, 5, 6, 7)); list1.removeAll(list2); System.out.println("Difference: " + list1); // Output: [1, 2]
上面的代碼中,我們使用了和前面一樣的初始化方式來得到兩個List集合。接着,我們調用了list1的removeAll方法並傳入了list2來移除它們的交集,從而得到list1與list2不相同的元素的集合。
四、兩個List對象取交集
如果我們需要檢查兩個List對象是否有相同的元素,可以使用Collections的交集方法來實現。
List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5)); List<Integer> list2 = new ArrayList<>(Arrays.asList(3, 4, 5, 6, 7)); List<Integer> intersection = new ArrayList<>(list1); intersection.retainAll(list2); System.out.println("Intersection: " + intersection); // Output: [3, 4, 5]
上面的代碼中,我們使用了和前面一樣的初始化方式來得到兩個List集合。接着,我們使用了Collections.copy方法將list1的元素複製到了一個新的List集合intersection中。接着,我們調用了intersection的retainAll方法並傳入了list2來取得它們的交集。最後,我們打印了得到的交集。
五、兩個List對象取差集
如果我們需要取得兩個List對象不同的元素,可以使用Collections的差集方法來實現。
List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5)); List<Integer> list2 = new ArrayList<>(Arrays.asList(3, 4, 5, 6, 7)); List<Integer> difference = new ArrayList<>(list1); difference.removeAll(list2); System.out.println("Difference: " + difference); // Output: [1, 2]
上面的代碼中,我們使用了和前面一樣的初始化方式來得到兩個List集合。接着,我們使用了Collections.copy方法將list1的元素複製到了一個新的List集合difference中。接着,我們調用了difference的removeAll方法並傳入了list2來取得它們的差集。最後,我們打印了得到的差集。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/306624.html