欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java8流处理,不生产博客,做个好博客的搬运工

程序员文章站 2022-06-24 11:13:21
这位大佬写的不错,每次不会都会去看看https://www.cnblogs.com/shenlanzhizun/p/6027042.html 另外补充一些Java8骚操作 BigDecimal求和 博客中位置:3.2 归约:reduce(其实已经有了int类型的求和,我写个这个类型的吧) 另外提一点 ......

这位大佬写的不错,每次不会都会去看看

另外补充一些java8骚操作

bigdecimal求和

博客中位置:3.2 归约:reduce(其实已经有了int类型的求和,我写个这个类型的吧)

list<bigdecimal> bigdecimallist = new arraylist<>();
bigdecimallist.add(bigdecimal.valueof(0.05));
bigdecimallist.add(bigdecimal.valueof(0.05));
system.out.println(bigdecimallist.stream().reduce(bigdecimal.zero,bigdecimal::add));
结果:0.15

另外提一点,

system.out.println(new bigdecimal(0.05));
结果:0.05000000000000000277555756156289135105907917022705078125

这个写法,是直接传入了double类型,输出的是丢失精度的结果,并不是bigdecimal会丢失精度,是double(具体百度)

所以尽量用 bigdecimal.valueof()

将list映射为map

博客中位置:3.3 收集:tomap文中提到过,但是没有例子,实战中又用的到

借他list一用

//将学生id作为键,学生名称为值
map<long, string> collect = students.stream().collect(collectors.tomap(student::getid, student::getname, (k1, k2) -> k1));
//将学生id作为键,学生对象为值
map<long, student> studentmap = students.stream().collect(collectors.tomap(student::getid, student -> student, (k1, k2) -> k1));

排序

博客中位置:2.1 过滤:其中提到排序sorted(列子有排序字段类型是int)

//string类型 按照(姓名)自然顺序排序
students = students.stream().sorted((s1,s2)->s1.getname().compareto(s2.getname())).collect(collectors.tolist());
//或者只排序姓名
list<string> stringlist = students.stream().map(student::getname).collect(collectors.tolist());
stringlist =stringlist.stream().sorted(comparator.naturalorder()).collect(collectors.tolist());
//按照时间排序(倒叙) 假设学生对象有创建时间这个字段
students = students.stream().sorted(comparator.comparing(student::getcreatetime).reversed()).collect(collectors.tolist());

 欢迎补充批评,另外工作中另外遇到我会补充更新