Stream API基本操作
创建Stream:
从集合创建Stream:list.stream()
从数组创建Stream:Arrays.stream(array)
创建无限流:IntStream.iterate(0, n -> n + 1)
中间操作:
filter(Predicate<T> predicate):过滤元素。
map(Function<T, R> mapper):映射元素。
flatMap(Function<T, Stream<R>> mapper):扁平化流。
sorted():排序。
distinct():去除重复元素。
终止操作:
forEach(Consumer<T> action):遍历元素。
reduce(BinaryOperator<T>):归约。
collect(Collector<T,A,R> collector):收集结果。
anyMatch/Predicate<T>:是否存在满足条件的元素。
allMatch/Predicate<T>:所有元素是否都满足条件。
noneMatch/Predicate<T>:是否存在不满足条件的元素。
findFirst/Optional<T>:获取第一个元素。
count/long:计算元素数量。
Lambda表达式
Lambda表达式是一种匿名函数,它可以作为方法参数或局部变量。Lambda表达式简化了函数式接口的实现,使得代码更加简洁。
Lambda表达式语法
Lambda表达式的语法形式如下:
不用stream流:
List<String> list = Arrays.asList("hello", "world", "java", "stream", "lambda");
List<String> result = new ArrayList<>();
for (String s : list) { if (s.length() > 3) { result.add(s.toUpperCase()); } }
用stream流
List<String> list = Arrays.asList("hello", "world", "java", "stream", "lambda");
List<String> result = list.stream() .filter(s -> s.length() > 3) .map(String::toUpperCase) .collect(Collectors.toList());
并行流
List<String> result = list.parallelStream() .filter(s -> s.length() > 3) .map(String::toUpperCase) .collect(Collectors.toList());