列举多个例子生动形象地详细解释说明Java中stream流所有的中间方法
Java中的Stream流提供了许多中间方法,用于对流中的元素进行处理和转换。下面是一些常见的中间方法及其详细解释说明:
- filter(Predicate
predicate):过滤流中的元素,只保留满足条件的元素。 例如:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
// evenNumbers = [2, 4]
- map(Function<T, R> mapper):对流中的每个元素应用指定的函数,并将结果映射为一个新的流。 例如:
List<String> names = Arrays.asList("John", "Jane", "Bob");
List<Integer> nameLengths = names.stream()
.map(String::length)
.collect(Collectors.toList());
// nameLengths = [4, 4, 3]
- sorted():对流中的元素进行排序,默认是自然排序。 例如:
List<Integer> numbers = Arrays.asList(3, 1, 2, 5, 4);
List<Integer> sortedNumbers = numbers.stream()
.sorted()
.collect(Collectors.toList());
// sortedNumbers = [1, 2, 3, 4, 5]
- distinct():去除流中的重复元素。 例如:
List<Integer> numbers = Arrays.asList(1, 2, 2, 3, 3, 3);
List<Integer> distinctNumbers = numbers.stream()
.distinct()
.collect(Collectors.toList());
// distinctNumbers = [1, 2, 3]
- limit(long maxSize):截断流,只保留前面指定数量的元素。 例如:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> limitedNumbers = numbers.stream()
.limit(3)
.collect(Collectors.toList());
// limitedNumbers = [1, 2, 3]
- skip(long n):跳过前面指定数量的元素,返回剩余的元素。 例如:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> skippedNumbers = numbers.stream()
.skip(2)
.collect(Collectors.toList());
// skippedNumbers = [3, 4, 5]
- peek(Consumer
action):对流中的每个元素应用指定的消费者函数,并返回原始流。 例如:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> doubledNumbers = numbers.stream()
.peek(n -> System.out.println("Doubling " + n))
.map(n -> n * 2)
.collect(Collectors.toList());
// doubledNumbers = [2, 4, 6, 8, 10]
这些中间方法可以根据具体的需求进行组合和使用,以实现对流的灵活处理和转换。
原文地址: https://www.cveoy.top/t/topic/i6br 著作权归作者所有。请勿转载和采集!