惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
人人都是产品经理
人人都是产品经理
Hugging Face - Blog
Hugging Face - Blog
罗磊的独立博客
博客园 - 【当耐特】
D
Docker
Y
Y Combinator Blog
L
LangChain Blog
博客园 - 三生石上(FineUI控件)
I
InfoQ
阮一峰的网络日志
阮一峰的网络日志
F
Fortinet All Blogs
J
Java Code Geeks
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
B
Blog
The GitHub Blog
The GitHub Blog
腾讯CDC
MongoDB | Blog
MongoDB | Blog
博客园 - Franky
爱范儿
爱范儿
A
About on SuperTechFans
量子位
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC

博客园 - Neonuu

解决ollama官方下载过慢的问题(包含windows和linux) 使用java 命令运行包含main方法的class文件时,报 Error: Could not find or load main class Test IDEA整合SVN VUE,编辑详情时,列表数据也跟着改变 VUE二级联动,改变一级下拉框,清空二级下拉框 MySQL面试题 JVM原理 Linux服务器安装MariaDB数据库 jar包解压后,修改完配置文件,再还原成jar包 Java获取resources文件夹下properties配置文件 Java中synchronized,wait(),notify() Java中Runnable和Thread的区别(网上部分说法是错误的) Java中如何实现一个接口拥有多个实现类 JPA中getOne与findOne try catch与spring的事务回滚 Spring主动触发事务回滚 Redis五种数据类型及应用场景 Java面试题 SQL HAVING用法详解 const,var,let区别
Java8 list.stream()常用方法
Neonuu · 2026-03-12 · via 博客园 - Neonuu
import java.util.*;
import java.util.stream.Collectors;

public class StreamTest {
    public static class Student{
        private String name;
        private int age;

        public String getName() {
            return name;
        }

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

        public int getAge() {
            return age;
        }

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

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

        @Override
        public boolean equals(Object o) {
            if (o == null || getClass() != o.getClass()) return false;
            Student student = (Student) o;
            return age == student.age && Objects.equals(name, student.name);
        }

        @Override
        public int hashCode() {
            return Objects.hash(name, age);
        }
    }

    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("d");

        List<Student>  studentList = new ArrayList<>();
        Student s1 = new Student("Tom",15);
        Student s2 = new Student("Jack",16);
        Student s3 = new Student("David",17);
        Student s4 = new Student("David",17);
        studentList.add(s1);
        studentList.add(s2);
        studentList.add(s3);
        studentList.add(s4);

        //筛选满足条件的元素
        list = list.stream().filter(s -> s.contains("a")).collect(Collectors.toList());
        studentList = studentList.stream().filter(s -> "Tom".equals(s.name)).collect(Collectors.toList());

        //元素映射转换,转换成大写
        list = list.stream().map(String::toUpperCase).collect(Collectors.toList());
        //元素映射转换,学生类转换成学生名字
        List<String> nameList = studentList.stream().map(Student::getName).collect(Collectors.toList());

        //去重
        list = list.stream().distinct().collect(Collectors.toList());
        //实体类去重,需重写equals
        studentList = studentList.stream().distinct().collect(Collectors.toList());

        //正序
        list = list.stream().sorted().collect(Collectors.toList());
        //倒序
        list = list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());

        //实体类的某个字段正序
        studentList = studentList.stream().sorted(Comparator.comparing(Student::getAge)).collect(Collectors.toList());
        //实体类的某个字段倒序
        studentList = studentList.stream().sorted(Comparator.comparing(Student::getAge).reversed()).collect(Collectors.toList());

        //分组
        Map<String,List<Student>> map = studentList.stream().collect(Collectors.groupingBy(Student::getName));

    }
}

posted on 2026-03-12 09:56  Neonuu  阅读(8)  评论()    收藏  举报