ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java中流操作-stream

2022-05-03 18:01:23  阅读:147  来源: 互联网

标签:中流 studientList stream Studient 3001 new java log


流操作

图片来源于

简单使用

有这样两个对象StudentTeacher

常用的方法(持续更新)

@Slf4j
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class StreamUtilTest {

    public List<Studient> studientList = new ArrayList<>();
    public List<Teacher> teacherList = new ArrayList<>();

    @BeforeAll
    private void bef(){
        Studient studient1 = new Studient("1","张三", 20.2f, "北京", "3001");
        Studient studient2 = new Studient("2","李四", 20.3f, "北京", "3001");
        Studient studient3 = new Studient("3","赵六", 20.6f, "天津", "3001");
        Studient studient4 = new Studient("4","燕南七", 19.0f, "深圳", "3002");
        Studient studient5 = new Studient("5","老八", 21.0f, "杭州", "3002");

        studientList.add(studient1);
        studientList.add(studient2);
        studientList.add(studient3);
        studientList.add(studient4);
        studientList.add(studient5);

        Teacher teacher1 = new Teacher("3001", "刘老师");
        Teacher teacher2 = new Teacher("3002", "李老师");
        teacherList.add(teacher1);
        teacherList.add(teacher2);

    }

    @Test
    void test01(){
        log.info("学生信息是{}", studientList);
    }

    @Test
    void streamTest(){
        // stream 过滤
        List<Studient> studientList1 =  studientList.stream().filter(item -> "3001".equals(item.getTeachId())).collect(Collectors.toList());
        log.info("筛选出导师id是 3001 的学生 {}", studientList1);

        // 筛选导师编号是 3001 的学生姓名
        List<String> student3001name =  studientList1.stream().map(Studient::getName).collect(Collectors.toList());
        log.info("筛选出导师id是 3001 的学生姓名 {}", student3001name);

        // 筛选导师编号是 3001 的学生 以地址做分组 也就是 数据库操作中的 group by
        Map<String, List<Studient>> stringListMap =  studientList1.stream().collect(Collectors.groupingBy(Studient::getAddress));
        log.info("筛选出导师id是 3001 按照地址分组 {}",stringListMap);

        // 平均值
        double age = studientList1.stream().collect(Collectors.averagingDouble(Studient::getAge));
        log.info("筛选出导师id是 3001 平均年龄 {}", age);

        studientList1.stream().forEach(item -> item.setName(item.getName()+"123"));
        log.info("重新设置姓名是{}", studientList1);

        Studient studient1 = studientList1.stream().filter(item -> item.getAge() < 22).findAny().orElse(new Studient());
        log.info("年龄小于22的随便取一个{}", studient1);

        Studient mixStudent = studientList.stream().min(Comparator.comparing(Studient::getAge)).get();
        log.info("年龄最小的是{}", mixStudent);

    }
}

标签:中流,studientList,stream,Studient,3001,new,java,log
来源: https://www.cnblogs.com/geoary/p/16218894.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有