package homework; import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; /* 定义List存储Student对象, Student学生类包括int id; String name; int age等3个属性 向集合中添加1000个Student对象, 学生对象的id从1开始递增, name随机( 5~10个a~z),, age随机(10~20) 筛选出年龄小于15岁, 再根据年龄 由小到大排序, 年龄相同根据姓名升序排序, 打印结果 */ public class StudentTest { public static void main(String[] args) { List<Student> list = new ArrayList<>(); Random random = new Random(); //添加1000个学生 for (int i = 1; i <= 1000; i++) { String name = getName(random); //添加学生 list.add(new Student(i, name, random.nextInt(10) + 10)); } //创建stream流 list.stream() .filter(student -> student.age < 15) //筛选出岁数小于15的同学 .sorted(new Comparator<Student>() { //排序 @Override public int compare(Student o1, Student o2) { if (o1.age - o2.age == 0) { return o1.name.compareTo(o2.name); } return o1.age - o2.age; } }).forEach(System.out::println); //输出 } private static String getName(Random random) { int len = random.nextInt(5) + 5; //随机生成名字的长度 char chars[] = new char[len]; for (int j = 0; j < len; j++) { int n = random.nextInt(26); //随机生成字符,保存到数组中 chars[j] = (char) ('a' + n); } return String.valueOf(chars); } }
创建学生类
package homework; import java.util.Objects; public class Student { int id; String name; int age; public Student() { } public Student(int id, String name, int age) { this.id = id; this.name = name; this.age = age; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Student student = (Student) o; return id == student.id && age == student.age && Objects.equals(name, student.name); } @Override public int hashCode() { return Objects.hash(id, name, age); } @Override public String toString() { return "Student{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}'; } }