1,filter方法,集合元素过滤
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
for (int i = 0; i < 5; i++) {
Student s = new Student();
s.setAge((int) (Math.random()*100));
students.add(s);
}
// 过滤调大于50的(可以根据DTO属性做更多复杂业务逻辑)
List<Student> newStudents = students.stream().filter(new Predicate<Student>() {
@Override
public boolean test(Student student) {
if (student.getAge()<= 50){
return true;
}
return false;
}
}).collect(Collectors.toList());
System.out.println(newStudents);
}
2,排序
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
for (int i = 0; i < 3; i++) {
Student s = new Student();
s.setAge((int) (Math.random()*100));
students.add(s);
}
// 升序,降序改为(s1,s2)->s2.getAge()-s1.getAge()
List<Student> newStudents = students.stream().sorted((s1,s2)->s2.getAge()-s1.getAge()).collect(Collectors.toList());
System.out.println(newStudents);
}
3.分组:
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
for (int i = 0; i < 5; i++) {
Student s = new Student();
s.setAge(i);
s.setName(i+"");
students.add(s);
}
for (int i = 0; i < 5; i++) {
Student s = new Student();
s.setAge(i);
s.setName(i+"");
students.add(s);
}
// 过滤调大于50的
Map<Integer, List<Student>> newStudents = (Map<Integer, List<Student>>) students.stream().collect(Collectors.groupingBy(Student::getAge));
System.out.println(newStudents);
}