Java中的java.util.stream.Stream类是Java 8引入的一个用于处理集合元素的流式处理工具。它提供了一种更简洁、更灵活的方式来进行集合操作,例如过滤、映射、排序和聚合。
Stream类有两种类型:流处理中的数据源可以是集合,也可以是数组。Stream类提供了许多方法来对数据源进行操作和处理,这些方法可以按需求链式调用。
以下是一些常用的Stream类方法及其示例:
1. filter方法:过滤满足特定条件的元素。
List numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
List evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
System.out.println(evenNumbers); // 输出 [2, 4, 6, 8]
2. map方法:对每个元素应用给定的函数,将元素转换成另一种形式。
List names = Arrays.asList("Alice", "Bob", "Charlie");
List nameLengths = names.stream()
.map(String::length)
.collect(Collectors.toList());
System.out.println(nameLengths); // 输出 [5, 3, 7]
3. sorted方法:对流中的元素进行排序。
List numbers = Arrays.asList(3, 1, 6, 2, 5, 4);
List sortedNumbers = numbers.stream()
.sorted()
.collect(Collectors.toList());
System.out.println(sortedNumbers); // 输出 [1, 2, 3, 4, 5, 6]
4. reduce方法:根据给定的二元操作函数进行元素的聚合操作。
List numbers = Arrays.asList(1, 2, 3, 4, 5);
Optional sum = numbers.stream()
.reduce((x, y) -> x + y);
System.out.println(sum.orElse(0)); // 输出 15
以上只是Stream类的一小部分方法和用法,Stream类还提供了许多其他强大且方便的方法,例如distinct、limit、skip等等,它们都能帮助我们更好地处理和操作集合中的元素。值得注意的是,Stream类的所有操作都是惰性求值的,即只有在终止操作时才会触发实际的计算。这使得我们能够更高效地处理大量的数据。
领取专属 10元无门槛券
私享最新 技术干货