首页 > 编程语言 >JAVA8 collect 使用

JAVA8 collect 使用

时间:2024-07-31 18:38:56浏览次数:15  
标签:name stream public collect studentList Student 使用 JAVA8

List<Student> studentList = Lists.newArrayList(new Student("路飞", 22, 175), new Student("红发", 40, 180),
                new Student("白胡子", 50, 185), new Student("白胡子", 60, 185));
        //最大值
        Optional<Student> maxStudent = studentList.stream().max(Comparator.comparingInt(Student::getHeight));
        //最小值
        Optional<Student> minStudent = studentList.stream().min(Comparator.comparingInt(Student::getHeight));
        //平均值
        Double avgAge = studentList.stream().collect(Collectors.averagingInt(Student::getAge));
        //统计,包括数量,和,最大最小值
        IntSummaryStatistics summaryStatistics = studentList.stream().collect(Collectors.summarizingInt(Student::getAge));
        long count = summaryStatistics.getCount();
        int max = summaryStatistics.getMax();
        int min = summaryStatistics.getMin();
        long sum = summaryStatistics.getSum();
        //连接收集器
        //直接连接
        String join1 = studentList.stream().map(Student::getName).collect(Collectors.joining());
        //逗号
        String join2 = studentList.stream().map(Student::getName).collect(Collectors.joining(","));
        //toList
        List<String> nameList = studentList.stream().map(Student::getName).collect(Collectors.toList());
        //toSet
        Set<String> nameSet = studentList.stream().map(Student::getName).collect(Collectors.toSet());
        //去重
        List<Student> uniqueStudentList = studentList.stream().distinct().collect(Collectors.toList());
        //按属性去重
        List<Student> attrUniqueStudentList = studentList.stream().collect(collectingAndThen(toCollection(() -> new TreeSet<>(Comparator.comparing(Student::getName))), ArrayList::new));

        //toMap
        Map<String, Integer> studentMap = studentList.stream().collect(Collectors.toMap(Student::getName, Student::getAge));
public class Student {
    private String name;
    private Integer age;
    private Integer height;


    public Student(String name, Integer age, Integer height) {
        this.name = name;
        this.age = age;
        this.height = height;
    }

    public Student() {
    }

    public Integer getHeight() {
        return height;
    }

    public void setHeight(Integer height) {
        this.height = height;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

标签:name,stream,public,collect,studentList,Student,使用,JAVA8
From: https://www.cnblogs.com/abowu/p/18335230

相关文章

  • 使用 `useServerSeoMeta` 优化您的网站 SEO
    title:使用useServerSeoMeta优化您的网站SEOdate:2024/7/31updated:2024/7/31author:cmdragonexcerpt:摘要:本文介绍了Nuxt3框架中的useServerSeoMeta函数,它用于服务器端渲染(SSR)中设置SEO元标签,以优化性能和搜索引擎排名。内容包括其基本用法、详细示例及各参数说......
  • css各种使用案例合集(二)
    1、hover动画场景1:要求有旋转、变色,有变化过程场景结果:代码示例:<divclass="box"><divclass="headUp"></div><divclass="head"></div><divclass="mouth"><divclass="eye"><......
  • 【2024最新版】超详细Python+Pycharm安装保姆级教程,Python+Pycharm环境配置和使用指南
    本文将从Python解释器安装到Pycharm专业版安装和配置汉化等使用都进行了详细介绍,希望能够帮助到大家。Python解释器&Pycharm安装包&Pycharm破姐插件我都打包好了。这份完整版的Python安装包已经上传至CSDN官方,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费获取......
  • 使用Postman测试API短轮询机制:深入指南
    短轮询是一种Web开发中常用的技术,用于在客户端和服务器之间定期检查更新。与长轮询或WebSockets等技术相比,短轮询简单易实现,但可能带来较多的HTTP请求,从而增加服务器负担。Postman作为一个强大的API测试工具,可以用来模拟和测试短轮询机制。本文将详细介绍如何在Postman中测......
  • 使用nmake编译源代码时,如何把编译好的文件安装到指定目录下
    nmake是Microsoft提供的一个用于Windows平台的make工具,它通常与VisualStudio一起使用。若要在Windows下使用nmake编译源代码,并将编译好的文件安装到指定目录下,您通常需要遵循以下步骤:打开开发者命令提示符:使用nmake前,你需要打开一个带有适当环境变量设置的......
  • js各种实际场景的使用案例合集(全)
    1、两个数组的交集场景1:找出两个数组arr1的activityProdId值存在在arr2中,如果存在则放入新数组arr3中场景条件:arr1=[        {activityProdId:23,name:"06",},        {activityProdId:56,name:"07",},        {activityProdId:78,name......
  • H7-TOOL自制Flash读写保护算法系列,为STM32H7全系列芯片制作读写使能和解除算法,支持在
    说明:很多IC厂家仅发布了内部Flash算法文件,并没有提供读写保护算法文件,也就是选项字节算法文件,需要我们制作。实际上当前已经发布的TOOL版本,已经自制很多了。但是依然有些厂家还没自制,所以陆续开始为这些厂家提供读写保护支持。最近好几个网友咨询H7系列芯片保护支持,马不停蹄,已......
  • 什么?在本地使用LLaMA大模型
    LLaMA是什么?LLaMA3.1是Meta公司开发的最新大型语言模型(LLM)系列,具有多种规格和显著改进。LLaMA3.1版本包含8B、70B和405B参数模型,专为各种复杂任务设计,包括多语言支持、翻译、对话生成和文本总结。其中LLaMA3.1405B是迄今为止最大和最强大的版本,具有显著......
  • Flask框架内容基础3 -- 使用redis实现异步任务队列
    前面所了解的所有请求都是同步的,那么当面临异步请求时,应该怎么做?调用者:携带参数发送请求API:接收请求并生成一个任务ID,接下来:返回给调用者+放到任务队列中worker:等待redis队列(List),一旦接收到任务,就执行并将结果返回到结果队列(Hash)调用者:等待n秒后,携带任务ID再次发送请求,获......
  • H7-TOOL自制Flash读写保护算法系列,为国民技术N32G031制作读写使能和解除算法,支持在线
    说明:很多IC厂家仅发布了内部Flash算法文件,并没有提供读写保护算法文件,也就是选项字节算法文件,需要我们制作。实际上当前已经发布的TOOL版本,已经自制很多了。但是依然有些厂家还没自制,所以陆续开始为这些厂家提供读写保护支持。实现效果:本次添加国民技术的N32G031,从2.26版本开......