一、簡介
在Java中,交集指兩集合中完全相同的元素。在實際的開發過程中,我們需要經常對多個集合求交集,以便進行下一步的操作。本文將介紹Java中求交集的方法。
二、使用Collection接口中的retainAll方法
在Java中,Collection接口是集合框架中的一個接口,它是List、Set和Queue接口的父接口。這個接口提供了一個retainAll方法,可以用於求兩個集合之間的交集。具體方法如下:
Collection c1 = Arrays.asList(1, 2, 3, 4, 5); Collection c2 = Arrays.asList(4, 5, 6, 7, 8); c1.retainAll(c2); //求交集 System.out.println(c1); //輸出[4, 5]
上面的代碼中,我們通過Arrays.asList方法定義兩個整型集合c1和c2,然後通過調用c1的retainAll方法,傳入c2作為參數,就可以得到兩個集合的交集。
三、使用Java 8中的stream API
Java 8引入了stream API,可以使得代碼更加的簡潔,同時也比較容易理解。下面是一個使用stream API求兩個集合交集的例子:
List list1 = Arrays.asList(1, 2, 3, 4, 5); List list2 = Arrays.asList(4, 5, 6, 7, 8); List result = list1.stream() .distinct() .filter(list2::contains) .collect(Collectors.toList()); System.out.println(result); //輸出[4, 5]
以上代碼中,我們通過調用stream方法可以把集合轉換成流,然後使用distinct方法去重,filter方法取交集,最後使用collect方法將流轉換成List類型,並返回結果。
四、使用Apache Commons Collection庫中的方法
Apache Commons是一個開源工具庫,其中的Commons Collection庫包含了很多實用的集合操作方法,如ArrayUtils、BagUtils、CollectionUtils、ListUtils、MapUtils等等。這裡我們使用其中的CollectionUtils類中的intersection方法,具體方法如下:
List list1 = Arrays.asList(1, 2, 3, 4, 5); List list2 = Arrays.asList(4, 5, 6, 7, 8); List result = (List) CollectionUtils.intersection(list1, list2); System.out.println(result); //輸出[4, 5]
以上代碼中,我們通過調用CollectionUtils類中的intersection方法,傳入兩個List類型的集合作為參數,就可以得到它們的交集了。
五、總結
本文介紹了Java中求兩集合之間交集的三種方法,分別是使用Collection接口中的retainAll方法、使用Java 8中的stream API、使用Apache Commons Collection庫中的方法。在實際的開發中,我們可以根據具體情況選擇使用不同的方法,以便更好的完成代碼編寫。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/199147.html