Stream流是Java8新增特性,下面我就来详解Stream流的常用9大用法@mikechen
Stream流定义
Stream流是Java 8中引入的一种处理集合数据的API,它提供了一种更加简洁、高效的方式来处理集合数据。
Stream流作用
Stream可以代替传统的for循环和迭代器,可以进行筛选、排序、映射、汇聚等操作,并且支持并行处理。
另外,Stream流还可以与Lambda表达式和方法引用结合使用,这样可以更加方便地对集合数据进行处理。
总的来说,Stream流的作用:是一种简单而高效的处理集合数据的方式,可以大大简化代码,同时还可以提高代码的性能。
Stream流用法
Stream流有多种用法,下面列举一些常见的用法:
1. 过滤(filter)
filter方法可以从Stream中过滤出满足条件的元素。
例如:过滤出长度大于3的字符串
mathematicaCopy codeList list = Arrays.asList("apple", "banana", "cherry"); list.stream() .filter(s -> s.length() > 3) .forEach(System.out::println);
2.转换(map)
map方法可以将Stream中的元素转换成另外一种类型。
例如:将字符串转换成大写形式
mathematicaCopy codeList list = Arrays.asList("apple", "banana", "cherry"); list.stream() .map(String::toUpperCase) .forEach(System.out::println);
3.排序(sorted)
sorted方法可以对Stream中的元素进行排序,例如:按照字符串长度进行升序排序。
lessCopy codeList<String> list = Arrays.asList("apple", "banana", "cherry"); list.stream() .sorted((s1, s2) -> s1.length() - s2.length()) .forEach(System.out::println);
4.去重(distinct)
distinct方法可以去掉Stream中的重复元素,例如:去重后输出字符串长度。
mathematicaCopy codeList list = Arrays.asList("apple", "banana", "cherry", "banana", "apple"); list.stream() .distinct() .map(String::length) .forEach(System.out::println);
5.截取(limit)
limit方法可以截取Stream中的前n个元素,例如:截取前2个元素并输出。
mathematicaCopy codeList list = Arrays.asList("apple", "banana", "cherry"); list.stream() .limit(2) .forEach(System.out::println);
6.跳过(skip)
skip方法可以跳过Stream中的前n个元素,例如:跳过前2个元素并输出。
mathematicaCopy codeList list = Arrays.asList("apple", "banana", "cherry"); list.stream() .skip(2) .forEach(System.out::println);
7.汇聚(reduce)
reduce方法可以将Stream中的元素汇聚成一个结果,例如:计算字符串长度之和。
mathematicaCopy codeList list = Arrays.asList("apple", "banana", "cherry"); int sum = list.stream() .mapToInt(String::length) .reduce(0, Integer::sum); System.out.println(sum);
8.收集(collect)
collect方法可以将Stream中的元素收集到一个集合中。
例如:将长度大于3的字符串收集到一个新的List中。
mathematicaCopy codeList list = Arrays.asList("apple", "banana", "cherry"); List result = list.stream() .filter(s -> s.length() > 3) .collect(Collectors.toList()); System.out.println(result);
9.forEach
Stream 的 forEach() 方法可以用来遍历 Stream 中的每一个元素,并对每个元素执行指定的操作。
例如,以下代码使用 forEach() 方法遍历一个整型列表,并打印每个元素的值:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); numbers.stream() .forEach(num -> System.out.println(num));
另外,Stream支持并行处理,可以通过parallel方法将一个串行的Stream转换。
以上就是Stream流详解,更多Java8新特性,请查看:Java8新特性详解(9大新特性)
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》