zoukankan      html  css  js  c++  java
  • java8 用法小结

    一 简单的stream

    parallelStream慎用,除非你知道它内部干了什么
            List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);
            list.parallelStream().forEach(System.out::println);
            list.parallelStream().forEachOrdered(System.out::println);
    6
    5
    7
    8
    3
    1
    4
    2
    ---------
    1
    2
    3
    4
    5
    6
    7
    8
    输出结果

    二 简单的stream, collect, sum, count, groupBy, partition

    假设有一个这样的对象流:

    +----------+------------+-----------------+
    | Name     | Age        | Address         |
    +----------+------------+-----------------+
    | aa       | 11         | shanghai        |
    | bb       | 61         | beijing         |
    | cc       | 30         | dalian          |
    | dd       | 90         | dalian          |
    +----------+------------+-----------------+

    (1)初始化
            List<User> userList = Stream.of(
                    new User("aa", 11, "shanghai"),
                    new User("bb", 61, "beijing"),
                    new User("cc", 30, "dalian"),
                    new User("dd", 90, "dalian")
            ).collect(Collectors.toList());
    (2)取某一字段 stream & collect
            System.out.println(userList.stream().map(User::getAddress).collect(Collectors.toList()));
            System.out.println("---------");
            ArrayList<String> arrayList = userList.stream().map(User::getAddress).collect(Collectors.toCollection(ArrayList::new));
            System.out.println(arrayList);
            System.out.println("---------");
            System.out.println(userList.stream().map(User::getAddress).collect(Collectors.joining("@@")));
    [shanghai, beijing, dalian, dalian]
    ---------
    [shanghai, beijing, dalian, dalian]
    ---------
    shanghai@@beijing@@dalian@@dalian
    输出结果
    (3)取总和 sum
            System.out.println(userList.stream().mapToInt(User::getAge).sum());
    192
    输出结果
    (3)分组
            Map<String, List<User>> addressMap = userList.stream().collect(Collectors.groupingBy(User::getAddress));
    System.out.println(addressMap);
    {shanghai=[User[name=aa,address=shanghai]], dalian=[User[name=cc,address=dalian], User[name=dd,address=dalian]], beijing=[User[name=bb,address=beijing]]}
    输出结果
    (4)分组取和,平均数
            Map<String, Long> addressCountMap = userList.stream().collect(Collectors.groupingBy(User::getAddress, Collectors.counting()));
            System.out.println(addressCountMap);
    
            Map<String, Double> map = userList.stream().collect(Collectors.groupingBy(User::getAddress, Collectors.averagingInt(User::getAge)));
            System.out.println(map);
    {shanghai=1, dalian=2, beijing=1}
    {shanghai=11.0, dalian=60.0, beijing=61.0}
    输出结果
    (5)分区 分区是一种特殊的分组,结果 map 至少包含两个不同的分组——一个true,一个false
            Map<Boolean, List<User>> partitionMap = userList.stream().collect(Collectors.partitioningBy(user -> Objects.equals(user.getAddress(), "beijing")));
            System.out.println(partitionMap);
            System.out.println(partitionMap.get(true));
    
            Map<Boolean, Map<String, Long>> partitionGroupByMap = userList.stream()
                    .collect(Collectors.partitioningBy(user -> user.getAge() < 70, Collectors.groupingBy(User::getAddress, Collectors.counting())));
            System.out.println(partitionGroupByMap);
    {false=[User[name=aa,address=shanghai], User[name=cc,address=dalian], User[name=dd,address=dalian]], true=[User[name=bb,address=beijing]]}
    [User[name=bb,address=beijing]]
    {false={dalian=1}, true={shanghai=1, dalian=1, beijing=1}}
    输出结果
    
    


  • 相关阅读:
    PowerDesigner与Eclipse同步开发
    postdrop: create file maildrop/xxx: Permission denied
    mysql导出数据mysqldump用法
    mysql 存储过程中 limit之后使用分页变量,传入分页参数. 类似于微博游标分批次获取信息;问号参数类似于c#的string.format;问号占位符
    mysql 获取本周一的日期,本周日的日期
    mysql 游标 ,嵌套游标
    asp.net调用mysql 存储过程 带 out 返回值,返回刚插入数据库中的自增的ID,LAST_INSERT_ID() 的使用
    跨服务器,跨数据库,多表联合查询 / 如何用sql语句来查询表中哪些记录是重复的
    asp.net 使用mysql数据库,OUT parameter返回值为null的bug
    mysql 类型转换 cast 将 float 转换为 decimal
  • 原文地址:https://www.cnblogs.com/balfish/p/7792477.html
Copyright © 2011-2022 走看看