欢迎访问宙启技术站
智能推送

使用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还提供了更多的操作方法,可以根据实际需求选择使用。