美文网首页
JDK 1.8收集器使用

JDK 1.8收集器使用

作者: 唐岭云 | 来源:发表于2018-05-20 23:31 被阅读8次

实体类定义:

@Data
public class User {

    private String userName;
    private int age;
    
    public User() {
    }
    
    
    public User(String userName, int age) {
        this.userName = userName;
        this.age = age;
    }
}

收集器使用案例:



    public static void main(String[] args) {
        List<User> list = new ArrayList<User>(
                Arrays.asList(
                        new User("TangLingYun", 28), 
                        new User("TangLingYun1", 21),
                        new User("TangLingYun2", 22), 
                        new User("TangLingYun4", 22), 
                        new User("TangLingYun3", 23)));

        // 数据提取
        TreeSet<Integer> treeSet = list.stream().map(User::getAge).collect(Collectors.toCollection(TreeSet::new));
        System.err.println(treeSet);

        // 聚合函数
        IntSummaryStatistics intSummaryStatistics = list.stream().collect(Collectors.summarizingInt(User::getAge));
        System.err.println(intSummaryStatistics);

        // 分块 数据筛选
        Map<Boolean, List<User>> map = list.stream().collect(Collectors.partitioningBy(u -> u.getAge() < 28));
        System.err.println(map);

        // 分组
        Map<Integer, List<User>> collect = list.stream().collect(Collectors.groupingBy(User::getAge));
        System.err.println(collect);

        // 分组 个数
         Map<Integer, Long> collect2 = list.stream().collect(Collectors.groupingBy(User::getAge,Collectors.counting()));
        System.err.println(collect2);

    }


输出结果:

[21, 22, 23, 28]
IntSummaryStatistics{count=5, sum=116, min=21, average=23.200000, max=28}
{false=[User@2d554825], true=[User@68837a77, User@6be46e8f, User@3567135c, User@327471b5]}
{21=[User@68837a77], 22=[User@6be46e8f, User@3567135c], 23=[User@327471b5], 28=[User@2d554825]}
{21=1, 22=2, 23=1, 28=1}

相关文章

网友评论

      本文标题:JDK 1.8收集器使用

      本文链接:https://www.haomeiwen.com/subject/ycexjftx.html