使用Java中的Stream API处理集合数据
发布时间:2023-07-04 07:46:07
Stream API是Java 8引入的一个强大的功能,可以简化集合数据的处理。它提供了一种流式的数据处理方式,可以对集合中的元素进行过滤、映射、排序、归约等操作。
首先,我们需要通过调用stream()方法将集合转换为一个流。然后,我们可以对这个流进行一系列操作,最后通过调用collect()方法将结果转换为一个新的集合或者值。
Stream API提供了几种常用的操作方法,下面列举了一些常用的操作方法及其用法。
1. filter:通过一个谓词(Predicate)筛选集合中的元素。例如,我们可以筛选出所有年龄大于18岁的人:
List<Person> adults = people.stream()
.filter(person -> person.getAge() > 18)
.collect(Collectors.toList());
2. map:将集合中的每个元素映射为另一个元素。例如,我们可以将集合中的每个人的姓名映射为姓名的长度:
List<Integer> nameLengths = people.stream()
.map(person -> person.getName().length())
.collect(Collectors.toList());
3. limit:限制返回的元素数量。例如,我们可以限制返回年龄大于18岁的前五个人:
List<Person> adults = people.stream()
.filter(person -> person.getAge() > 18)
.limit(5)
.collect(Collectors.toList());
4. sorted:对元素进行排序。例如,我们可以按照年龄对人进行排序:
List<Person> sortedByAge = people.stream()
.sorted(Comparator.comparing(Person::getAge))
.collect(Collectors.toList());
5. distinct:去除重复的元素。例如,我们可以得到所有不重复的年龄:
List<Integer> distinctAges = people.stream()
.map(Person::getAge)
.distinct()
.collect(Collectors.toList());
6. reduce:将所有元素归约为一个值。例如,我们可以求集合中所有人的年龄总和:
int totalAge = people.stream()
.mapToInt(Person::getAge)
.reduce(0, Integer::sum);
以上是Stream API一些常用的操作方法,借助于这些方法,我们可以更加简洁和高效地处理集合数据。Stream API还提供了更多的操作方法,可以根据实际需求选择使用。
