zoukankan      html  css  js  c++  java
  • java8流处理,不生产博客,做个好博客的搬运工

    这位大佬写的不错,每次不会都会去看看https://www.cnblogs.com/shenlanzhizun/p/6027042.html

    另外补充一些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.10

    另外提一点,

    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));
    //根据年级分组,封装成map
    Map<Integer, List<Student>> map=students.stream().collect(Collectors.groupingBy(Student::getGrade);

    排序

    博客中位置: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());

    并行流

    public void pullSupplier() {
    List<String> students = new ArrayList<>();
    ForkJoinPool myPool = new ForkJoinPool(30);
    myPool.submit(() -> students.parallelStream().forEach(
    student -> {
    //设置九千万学生国籍(具体的逻辑)
    student.setGJ("中国");
    }));
    }

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

  • 相关阅读:
    Java实现 LeetCode 179 最大数
    Java实现 LeetCode 179 最大数
    Java实现 LeetCode 179 最大数
    SQL Server实现 LeetCode 178 分数排名
    SQL Server实现 LeetCode 178 分数排名
    SQL Server实现 LeetCode 178 分数排名
    开源免费的C/C++网络库(c/c++ sockets library)
    C++开源跨平台类库集
    动态链接库中分配内存引起的问题-- windows已在XX.exe中触发一个断点
    SDL 简介
  • 原文地址:https://www.cnblogs.com/javalbb/p/11215579.html
Copyright © 2011-2022 走看看