1、什么是Stream流
Lambda表达式,基于Lambda所带来的函数式编程,又引入了一个全新的Stream概念,用于解决集合类库既有的鼻端。
2、案例
假设现在有一个需求, 将list集合中姓张的元素过滤到一个新的集合中;然后将过滤出来的姓张的元素中,再过滤出来长度为3的元素,存储到一个新的集合中
// 已知的知识来解决需求
List<String> list1 = new ArrayList<>();
list1.add("张老三");
list1.add("张小三");
list1.add("李四");
list1.add("赵五");
list1.add("张六");
list1.add("王八");
ArrayList<String> list2 = new ArrayList<>();
// 1.将list集合中姓张的元素过滤到一个新的集合中
for(String name : list1){
if(name.startsWith("张")){
list2.add(name);
}
}
ArrayList list3 = new ArrayList();
for (String name : list2) {
if (name.length() == 3){
list3.add(name);
}
}
System.out.println(list3);
很麻烦,不是吗,同样我们需要更加简洁优雅的方式实现 (链式调用)
3、 Stream流
list1.stream().filter((String name)->name.startsWith("张")).filter((String name)->name.length()==3).forEach((String name)->{
System.out.println("符合条件的姓名:" + name);
});
4、获取流的方式
Stream<String> stream1 = list.stream();
Stream<String> stream2 = set.stream();
//根据Map集合的键获取流
Set<Integer> map1 = map.keySet();
Stream<Integer> stream3 = map1.stream();
//根据Map集合的值获取流
Collection<String> map2 = map.values();
Stream<String> stream4 = map2.stream();
//根据Map集合的键值对对象获取瑞
Set<Map.Entry<Integer, String>> map3 = map.entrySet();
Stream<Map.Entry<Integer, String>> stream5 = map3.stream();
// 根据数组获取流
String[] arr = {"张颜宇","张三","李四","赵五","刘六","王七"};
Stream<String> stream6 = Stream.of(arr);
5、Stream流的常用方法

本文介绍了Java中的Stream流,如何使用Lambda表达式进行集合过滤、映射、计数、限制长度等操作,以及reduce方法进行快速计算,提供了一种更简洁优雅的方式来处理集合数据。
最低0.47元/天 解锁文章
8815

被折叠的 条评论
为什么被折叠?



