lambda表达式 -Stream流

首先定义一个数列

List list = new ArrayList();
list.add(1);
list.add(4);
list.add(5);
list.add(2);

Stream s1 = list.stream();//得到集合的串行流
Stream s2 = list.parallelStream();//得到集合的并行流,并行流相当于多线程,同时进行。

count.(s1); //调用下列的求和方法
max.(s1);
min.(s1);

1.数列求和

public static void count (Stream s){ //将流对象导入方法中
Long count = s.count();
System.out.println(count);
}

2.求数列中的最大值

public static void max (Stream s){
int max = s.max((a,b) -> a - b).get();
System.out.println(max);
}

3.求数列中的最小值

public static void max (Stream s){
int min = s.min((a,b) -> a - b).get();
System.out.println(min);
}

public static void count (Stream s){ //将流对象导入方法中
Long count = s.count();
System.out.println(count);
}

4.使用Stream的max方法获取集合中最长的字符串,首先设置一个字符串集合

String[] str = new String[]{"a", "b", "c", "d"};

Stream s3 = Stream.of(str);//得到集合的串行流
Stream s4 = Stream.of(str).parallel();//得到集合的并行流

写比较方法
public static void maxLength (Stream s){
String str1 = s.max((a,b) -> a.length() - b.length()).get();
System.out.println(str1);
}

调用方法
maxLength.(s3);

5.Stream的map方法,把集合中的每一个元素进行映射,进行某些逻辑处理,处理后把结果放到原来的位置上,替换掉原来的元素。

public static void map (Stream s){
s.map( a -> a * a ).forEach(System.out :: println);
}

map(s1); //调用map方法

  1. Filter方法筛选符合要求的数。

public static void filter (Stream s){
s.filter(a -> contains("a")).forEach(System.out :: println); //筛选包含a的字符串
}

filter(s3);//调用filter方法

  1. 取得流中指定数量的数,即流中前几个元素。

s1.limit(2).forEach(System.out :: println); //打印出流中前两个数

  1. sorted方法:对流进行排序。

s1.sorted().forEach(System.out :: println); //默认排序,字典排序(字母顺序)

public static void sorted (Stream s){
s.sorted((a,b) -> a.length() - b.length() ).forEach(System.out :: println); //按照流中元素的长度,从小到大排序,正序排列

9.通过collector和filter方法将偶数集合返回到新的list中。

public static List coll (List s){
List list = s.filter(a -> a % 2 == 0).collect(Collector.toList());//将筛选出的偶数收集到新list中,将新list返回到list,要注意方法中不需要void,返回值类型要与前面的list保持一致。

return list; }

coll(s1).stream().forEach( System.out :: println); //引用coll方法并且将其数组再次转化为流,用forEach输出每一个数。

10.对都是数字的流进行相应的统计学方法。

public static void summary (Stream s){
System.out.println("最大值" + s.mapToInt(a -> a).summaryStatistics().getMax());
System.out.println("最小值" + s.mapToInt(a -> a).summaryStatistics().getMax());
System.out.println("求和" + s.mapToInt(a -> a).summaryStatistics().getSum());

11.distinct()方法:去除流中重复的元素。

12.concat()方法:合并流。

Stream.concat(Stream.of(arr), Stream.of(arr1)); //将两个流合并。

posted @   啧啧z  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示