
























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)); } }
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。