Java-两个集合取差集(4种方式)
在Java中,可以使用以下四种方式来获取两个集合之间的差集:
- 使用
removeAll()
方法。 - 使用Java 8的流(Stream)。
- 使用Apache Commons Collections库的
CollectionUtils.subtract()
方法。 - 使用Google Guava库的
Sets.difference()
方法。
以下是每种方法的示例代码:
- 使用
removeAll()
方法:
Set<Integer> setA = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5));
Set<Integer> setB = new HashSet<>(Arrays.asList(3, 4, 5, 6, 7));
setA.removeAll(setB); // setA now contains {1, 2}
- 使用Java 8的流(Stream):
Set<Integer> setA = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5));
Set<Integer> setB = new HashSet<>(Arrays.asList(3, 4, 5, 6, 7));
Set<Integer> difference = setA.stream()
.filter(element -> !setB.contains(element))
.collect(Collectors.toSet());
- 使用Apache Commons Collections库的
CollectionUtils.subtract()
方法:
Set<Integer> setA = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5));
Set<Integer> setB = new HashSet<>(Arrays.asList(3, 4, 5, 6, 7));
CollectionUtils.subtract(setA, setB); // setA now contains {1, 2}
- 使用Google Guava库的
Sets.difference()
方法:
Set<Integer> setA = Sets.newHashSet(1, 2, 3, 4, 5);
Set<Integer> setB = Sets.newHashSet(3, 4, 5, 6, 7);
Set<Integer> difference = Sets.difference(setA, setB); // difference contains {1, 2}
在实际应用中,你可以根据项目中是否已经包含了相应的库来选择使用哪种方法。如果项目中没有包含这些库,那么使用Java自带的removeAll()
方法是最简单直接的选择。如果项目中已经使用了Java 8或者这些第三方库,则可以选择相应的方法。
评论已关闭