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

Java函数:如何使用Java8StreamAPI对集合进行操作?

发布时间:2023-06-22 14:15:56

Java8引入了Stream API来操作集合,使我们能够以清晰的方式对集合进行操作和处理。Stream API使我们能够以一种简洁、高效和多线程的方式轻松地操作集合。在本文中,我们将学习如何使用Java8StreamAPI对集合进行操作。

1. 创建流

我们可以通过调用集合的stream()方法来获得一个Stream流。以下是如何从List中创建一个流的示例:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);

Stream<Integer> stream = list.stream();

我们还可以使用Stream.of()方法创建一个流:

Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);

2. 中间操作

中间操作允许我们对流做一些处理,从而构造出新的流。以下是一些常用的中间操作。

1. filter()

filter()方法用于过滤出符合条件的元素。以下示例将过滤出大于3的元素:

Stream<Integer> stream = list.stream();

Stream<Integer> filteredStream = stream.filter(e -> e > 3);

2. map()

map()方法用于对流的每个元素执行操作,并返回一个新的流。以下示例将字符串转换为小写字母:

Stream<String> stream = Stream.of("A", "B", "C");

Stream<String> mappedStream = stream.map(String::toLowerCase);

3. sorted()

sorted()方法用于排序流的元素。以下示例将按升序排序:

Stream<Integer> stream = list.stream();

Stream<Integer> sortedStream = stream.sorted();

4. distinct()

distinct()方法用于去重流的元素。以下示例将去重:

Stream<Integer> stream = Stream.of(1, 2, 2, 3, 3, 3, 4, 4, 4, 4);

Stream<Integer> distinctStream = stream.distinct();

3. 终端操作

终端操作是用于处理流的最后一个操作。这个操作将使我们得到流的最终结果。以下是一些常用的终端操作。

1. forEach()

forEach()方法用于遍历流的每个元素。以下示例将打印出流的每个元素:

Stream<Integer> stream = list.stream();

stream.forEach(System.out::println);

2. reduce()

reduce()方法用于将流的所有元素转换为一个单一的结果。以下示例将计算出所有元素的和:

Stream<Integer> stream = list.stream();

Optional<Integer> reduced = stream.reduce((a, b) -> a + b);

System.out.println(reduced.get());

3. collect()

collect()方法用于将流的元素转换为集合或其他块。以下示例将流转换为List:

Stream<Integer> stream = list.stream();

List<Integer> result = stream.collect(Collectors.toList());

4. count()

count()方法用于计算流的元素数量。以下示例将计算出元素数量:

Stream<Integer> stream = list.stream();

long count = stream.count();

System.out.println(count);

综上所述,Java8StreamAPI使我们能够利用lambda、函数式接口等新特性以简洁高效的方式操作集合。如果您正在编写Java代码并且它需要对集合进行操作,请使用Java8StreamAPI。