特定要求
采用并行模式<parallelStream>从集合中筛选<filter>特定班级的学生,并且将该部分特定学生通过年龄<Comparator.comparing>来进行排序<sorted>,将排序好的学生的ID<map>放到一个新的集合中<collect>
按年龄升序
package com.example.starter;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class TestStream {
public static void main(String[] args) {
List<User> userList = new ArrayList<>();
User userOne = new User();
userOne.setId(1L);
userOne.setAge(5);
userOne.setClasses("3年2班");
User userTwo = new User();
userTwo.setId(2L);
userTwo.setAge(10);
userTwo.setClasses("4年3班");
User userThree = new User();
userThree.setId(3L);
userThree.setAge(8);
userThree.setClasses("3年2班");
User userFour = new User();
userFour.setId(4L);
userFour.setAge(6);
userFour.setClasses("3年2班");
userList.add(userOne);
userList.add(userTwo);
userList.add(userThree);
userList.add(userFour);
List<Long> userIdList = userList.parallelStream().filter(u -> "3年2班".equals(u.getClasses())).sorted(Comparator.comparing(User::getAge)).map(User::getId).collect(Collectors.toList());
System.out.println("升序 : " + userIdList);
}
}
class User {
//ID
private Long id;
//年龄
private int age;
//班级
private String classes;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getClasses() {
return classes;
}
public void setClasses(String classes) {
this.classes = classes;
}
}
按年龄降序
package com.example.starter;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class TestStream {
public static void main(String[] args) {
List<User> userList = new ArrayList<>();
User userOne = new User();
userOne.setId(1L);
userOne.setAge(5);
userOne.setClasses("3年2班");
User userTwo = new User();
userTwo.setId(2L);
userTwo.setAge(10);
userTwo.setClasses("4年3班");
User userThree = new User();
userThree.setId(3L);
userThree.setAge(8);
userThree.setClasses("3年2班");
User userFour = new User();
userFour.setId(4L);
userFour.setAge(6);
userFour.setClasses("3年2班");
userList.add(userOne);
userList.add(userTwo);
userList.add(userThree);
userList.add(userFour);
List<Long> userIdList = userList.parallelStream().filter(u -> "3年2班".equals(u.getClasses())).sorted(Comparator.comparing(User::getAge).reversed()).map(User::getId).collect(Collectors.toList());
System.out.println("降序 : " + userIdList);
}
}
class User {
//ID
private Long id;
//年龄
private int age;
//班级
private String classes;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getClasses() {
return classes;
}
public void setClasses(String classes) {
this.classes = classes;
}
}