java Stream结合函数方法

本教程操作环境:windows7系统、java10版,DELL G3电脑。

1.映射

如果想通过某种操作把一个流中的元素转化成新的流中的元素,可以使用 map() 方法。

publicclassMapStreamDemo{
publicstaticvoidmain(String[]args){
List<String>list=newArrayList<>();
list.add("周杰伦");
list.add("王力宏");
list.add("陶喆");
list.add("林俊杰");
Stream<Integer>stream=list.stream().map(String::length);
stream.forEach(System.out::println);
}
}

2.排序

publicvoidtest3(){
//(1)自然排序
List<Integer>list=Arrays.asList(4,3,7,9,12,8,10,23,2);
Stream<Integer>stream=list.stream();
stream.sorted().forEach(System.out::println);
//(2)对象排序:对象类可以先实现comparable接口,或者是直接指定
//第一种:先实现compable接口
List<Student>studentList=StudentData.getStudents();
studentList.stream().sorted().forEach(System.out::println);
//第二种:直接指定comparable
List<Student>studentList1=StudentData.getStudents();
studentList1.stream()
.sorted((e1,e2)->Integer.compare(e1.getAge(),e2.getAge()))
.forEach(System.out::println);
}

3.组合

reduce() 方法的主要作用是把 Stream 中的元素组合起来,它有两种用法:

Optionalreduce(BinaryOperatoraccumulator)

没有起始值,只有一个参数,就是运算规则,此时返回 Optional。

Treduce(Tidentity,BinaryOperatoraccumulator)

有起始值,有运算规则,两个参数,此时返回的类型和起始值类型一致。

publicclassReduceStreamDemo{
publicstaticvoidmain(String[]args){
Integer[]ints={0,1,2,3};
List<Integer>list=Arrays.asList(ints);

Optional<Integer>optional=list.stream().reduce((a,b)->a+b);
Optional<Integer>optional1=list.stream().reduce(Integer::sum);
System.out.println(optional.orElse(0));
System.out.println(optional1.orElse(0));

intreduce=list.stream().reduce(6,(a,b)->a+b);
System.out.println(reduce);
intreduce1=list.stream().reduce(6,Integer::sum);
System.out.println(reduce1);
}
}
原文来自:https://www.py.cn
© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容