取两个集合的交集数据

本文演示了如何使用Java的ArrayList和集合交集功能,通过实例展示了如何找到两个列表的公共元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


List<String> a = new ArrayList<String>();
a.add("a");
a.add("b");
a.add("c");
a.add("d");
a.add("e");
a.add("f");
List<String> b = new ArrayList<String>();
b.add("a");
b.add("c");
b.add("e");
b.add("g");
b.add("r");
b.add("q");

@SuppressWarnings("unchecked")
List<String> c = (List<String>)org.apache.commons.collections.CollectionUtils.intersection(a, b);
// System.out.println(java.util.Arrays.toString(c.toArray()));
for(String x : c){
System.out.println(x);
}


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]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值