Java 8 List 交集
在Java编程中,处理集合(List)是很常见的任务。有时我们需要找到两个列表中的共同元素,也就是它们的交集。在Java 8中,我们可以使用新的Stream API来轻松地实现这一目标。
Stream API
Java 8引入了Stream API,它是一种对集合数据进行操作的新方式。Stream API可以让我们非常方便地处理集合,包括对元素进行过滤、映射、排序和归约等操作。
首先,我们来看一个简单的示例,展示如何使用Stream API来计算两个列表的交集。
import java.util.ArrayList;
import java.util.List;
public class ListIntersectionExample {
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(2);
list1.add(3);
List<Integer> list2 = new ArrayList<>();
list2.add(2);
list2.add(3);
list2.add(4);
List<Integer> intersection = list1.stream()
.filter(list2::contains)
.toList();
System.out.println("Intersection: " + intersection);
}
}
在上面的示例中,我们创建了两个列表list1
和list2
,它们分别包含一些整数。我们使用Stream API中的stream()
方法将列表转换为一个流,然后使用filter()
方法过滤掉不在list2
中的元素。最后,我们使用新的toList()
方法将结果转换回一个列表。
运行上面的代码,输出结果为:
Intersection: [2, 3]
Stream API 的其他用法
除了上面的示例,Stream API还提供了其他很多方便的操作,可以帮助我们更高效地处理集合数据。
映射
List<String> names = List.of("Alice", "Bob", "Charlie");
List<Integer> nameLengths = names.stream()
.map(String::length)
.toList();
System.out.println("Name lengths: " + nameLengths);
在上面的示例中,我们使用map()
方法将字符串列表映射为它们的长度列表。输出结果为:
Name lengths: [5, 3, 7]
排序
List<Integer> numbers = List.of(3, 1, 4, 1, 5, 9, 2, 6, 5);
List<Integer> sortedNumbers = numbers.stream()
.sorted()
.toList();
System.out.println("Sorted numbers: " + sortedNumbers);
在上面的示例中,我们使用sorted()
方法对整数列表进行排序。输出结果为:
Sorted numbers: [1, 1, 2, 3, 4, 5, 5, 6, 9]
归约
List<Integer> numbers = List.of(1, 2, 3, 4, 5);
int sum = numbers.stream()
.reduce(0, Integer::sum);
System.out.println("Sum: " + sum);
在上面的示例中,我们使用reduce()
方法将整数列表中的所有元素求和。输出结果为:
Sum: 15
总结
在本文中,我们介绍了Java 8中如何使用Stream API来计算两个列表的交集。通过使用Stream API,我们可以更方便地处理集合数据,包括对元素进行过滤、映射、排序和归约等操作。
希望本文对你理解Java 8中的List交集有所帮助!如有任何问题或意见,请随时提出。