当前位置: 首页 > news >正文

Stream流简单使用

Stream流简单使用

1 按指定字段获取集合对象中的字段

List<String> idList = initStudentList.stream().map(Student::getId).collect(Collectors.toList());

2 按指定字段对集合对象进行排序

List<Student> collect = initStudentList.stream().sorted(Comparator.comparing(Student::getAge)).collect(Collectors.toList());

3 按指定字段对集合对象去重处理

List<Student> collect = initStudentList.stream().collect(Collectors.collectingAndThen(

                Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(Student::getName))), ArrayList::new

        ));

4 对集合对象批量处理

initStudentList.forEach((Student user) ->user.setName(user.getName()+"-123"));

5 将集合对象中指定字段转数组

String[] strings = initStudentList.stream().map(Student::getId).toArray(String[]::new);

代码如下

学生实体类

public class Student {



    private String id;

    private String name;

    private String sex;

    private int age;

    private Date birthday;



    @Override

    public String toString() {

        return "User{" +

                "id='" + id + '\'' +

                ", name='" + name + '\'' +

                ", sex='" + sex + '\'' +

                ", age=" + age +

                ", birthday=" + birthday +

                '}';

    }



    public String getId() {

        return id;

    }



    public void setId(String id) {

        this.id = id;

    }



    public String getName() {

        return name;

    }



    public void setName(String name) {

        this.name = name;

    }



    public String getSex() {

        return sex;

    }



    public void setSex(String sex) {

        this.sex = sex;

    }



    public int getAge() {

        return age;

    }



    public void setAge(int age) {

        this.age = age;

    }



    public Date getBirthday() {

        return birthday;

    }



    public void setBirthday(Date birthday) {

        this.birthday = birthday;

    }



}

初始化集合数据

public static List<Student> initStudentList(){

        List<Student> initStudentList = new ArrayList<>();

        for (int i = 0; i < 10; i++) {

            Student Student = new Student();

            Student.setId(String.valueOf(i*10));

            Student.setName("名称"+i);

            Student.setAge(i+2*i);

            if (i%3!=0){

                Student.setSex("男");

            }else{

                Student.setSex("女");

            }

            Student.setBirthday(new Date(new Random().nextLong()*(369 - 258)*i));

            initStudentList.add(Student);

        }

        // 设置重复名称用户

        Student Student1 = new Student();

        Student1.setId(String.valueOf(37));

        Student1.setName("名称"+3);

        Student1.setAge(11);

        Student1.setSex("男");

        Student1.setBirthday(new Date(new Random().nextLong()*(369 - 258)*2));

        initStudentList.add(Student1);

        Student Student2 = new Student();

        Student2.setId(String.valueOf(58));

        Student2.setName("名称"+5);

        Student2.setAge(17);

        Student2.setSex("女");

        Student2.setBirthday(new Date(new Random().nextLong()*(369 - 258)*2));

        initStudentList.add(Student2);

        return initStudentList;

    }

Test

public class StreamTest {



    public static void main(String[] args) {

        List<Student> initStudentList = initStudentList();

        setOut(initStudentList);

        System.out.println("-----------------------------------");



        // 流处理

        // 1 按指定字段获取集合对象中的字段

        /*List<String> idList = initStudentList.stream().map(Student::getId).collect(Collectors.toList());

        System.out.println(idList);*/



        // 2 按指定字段对集合对象进行排序

        /*List<Student> collect = initStudentList.stream().sorted(Comparator.comparing(Student::getAge)).collect(Collectors.toList());

        setOut(collect);*/



        // 3 按指定字段对集合对象去重处理

        /*List<Student> collect = initStudentList.stream().collect(Collectors.collectingAndThen(

                Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(Student::getName))), ArrayList::new

        ));

        setOut(collect);*/



        // 4 对集合对象批量处理

        /*initStudentList.forEach((Student user) ->user.setName(user.getName()+"-123"));

        setOut(initStudentList);*/



        // 5 将集合对象中指定字段转数组

        /*String[] strings = initStudentList.stream().map(Student::getId).toArray(String[]::new);

        for (String string : strings) {

            System.out.println(string);

        }*/



    }



    public static void setOut(List<Student> list){

        for (Student student : list) {

            System.out.println(student);

        }

    }



    public static List<Student> initStudentList(){

        List<Student> initStudentList = new ArrayList<>();

        for (int i = 0; i < 10; i++) {

            Student Student = new Student();

            Student.setId(String.valueOf(i*10));

            Student.setName("名称"+i);

            Student.setAge(i+2*i);

            if (i%3!=0){

                Student.setSex("男");

            }else{

                Student.setSex("女");

            }

            Student.setBirthday(new Date(new Random().nextLong()*(369 - 258)*i));

            initStudentList.add(Student);

        }

        // 设置重复名称用户

        Student Student1 = new Student();

        Student1.setId(String.valueOf(37));

        Student1.setName("名称"+3);

        Student1.setAge(11);

        Student1.setSex("男");

        Student1.setBirthday(new Date(new Random().nextLong()*(369 - 258)*2));

        initStudentList.add(Student1);

        Student Student2 = new Student();

        Student2.setId(String.valueOf(58));

        Student2.setName("名称"+5);

        Student2.setAge(17);

        Student2.setSex("女");

        Student2.setBirthday(new Date(new Random().nextLong()*(369 - 258)*2));

        initStudentList.add(Student2);

        return initStudentList;

    }



}

结果截图1

结果截图2

结果截图3

结果截图4

结果截图5

相关文章:

  • 第三章:前端技术栈与性能关联
  • 设计模式--访问者模式【行为型模式】
  • A000目录
  • 【C】识别一份嵌入式工程文件
  • Qt 保留小数点 固定长度 QString 格式化
  • npm在install时提示要安装python问题处理
  • python:多重继承、MRO(方法解析顺序)
  • [问题处理]BCLinux您的授权码是无效的,请获得正确授权码
  • 从传统到轻量级5G:网络架构演变与优化路径
  • 讯飞唤醒+VOSK语音识别+DEEPSEEK大模型+讯飞离线合成实现纯离线大模型智能语音问答。
  • C++笔记之标准库中的std::copy 和 std::assign 作用于 std::vector
  • mongoose和lwip有啥区别
  • 基于SpringBoot+Vue癌症患者交流平台的设计与实现
  • MYSQL的binlog有几种格式分别有什么区别
  • ubuntu追加path环境变量
  • git-提交时间和作者时间的区别
  • 宝塔mysql8.0设置数据库区分大小写
  • 英伟达(NVIDIA)芯片全解析:专业分类、应用场景与真实案例
  • Deepseek私有化部署
  • 车载调频发射机-参观、考察、学习随车讲解的好助手-车载移动调频发射车队解说导览系统应用
  • 深圳网站建设网页制作/怎么做app推广和宣传
  • 哪个网站可以做翻译赚钱/网上营销的方式
  • 网站设计图能用ps做么/爱站工具包的主要功能
  • 做设计私活的网站/优化大师电脑版官方
  • 美橙互联旗下网站/淘宝店铺怎么推广和引流
  • 人才网站的seo怎么做/软件开发app制作