Java取两个集合的交集

博客给出了Java中retainAll方法的声明,即public boolean retainAll(Collection<?> c),这是信息技术领域Java编程相关内容。
Java中获两个集合交集,可以通过多种方式实现。以下是几种常见的方法: ### 使用 Java 8 的 Stream API ```java import java.util.*; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5); List<Integer> list2 = Arrays.asList(4, 5, 6, 7, 8); // 获两个列表的交集 Set<Integer> set1 = new HashSet<>(list1); Set<Integer> set2 = new HashSet<>(list2); Set<Integer> intersection = set1.stream() .filter(set2::contains) .collect(Collectors.toSet()); System.out.println("Intersection using Stream API: " + intersection); // 输出 [4, 5] } } ``` ### 使用 Apache Commons Collections 库中的 `CollectionUtils.intersection()` 如果你的项目引入了 Apache Commons Collections 库,你可以使用 `CollectionUtils.intersection()` 方法来获两个集合交集。 ```java import org.apache.commons.collections4.CollectionUtils; import java.util.*; public class Main { public static void main(String[] args) { List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5)); List<Integer> list2 = new ArrayList<>(Arrays.asList(4, 5, 6, 7, 8)); // 获两个列表的交集 Collection<Integer> intersection = CollectionUtils.intersection(list1, list2); System.out.println("Intersection using CollectionUtils: " + intersection); // 输出 [4, 5] } } ``` ### 使用传统的循环和条件判断 对于不支持 Java 8 或更高版本的情况,可以使用传统的循环和条件判断来获两个集合交集。 ```java import java.util.*; public class Main { public static void main(String[] args) { List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5); List<Integer> list2 = Arrays.asList(4, 5, 6, 7, 8); // 获两个列表的交集 List<Integer> result = new ArrayList<>(); for (Integer num : list1) { if (list2.contains(num)) { result.add(num); } } System.out.println("Intersection using traditional loop: " + result); // 输出 [4, 5] } } ``` ### 使用 Java 8 的并行流(Parallel Streams) 如果数据量较大,可以考虑使用 Java 8 的并行流来提高性能。 ```java import java.util.*; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5); List<Integer> list2 = Arrays.asList(4, 5, 6, 7, 8); // 获两个列表的交集 Set<Integer> set1 = new HashSet<>(list1); Set<Integer> set2 = new HashSet<>(list2); Set<Integer> intersection = set1.parallelStream() .filter(set2::contains) .collect(Collectors.toSet()); System.out.println("Intersection using Parallel Streams: " + intersection); // 输出 [4, 5] } } ``` 以上方法展示了如何在 Java 中获两个集合交集,每种方法都有其适用场景,可以根据具体需求选择合适的方式[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值