students.stream().filter(x -> x.getHeight() > 155).forEach(stu->{ System.out.println(stu..toString()); });
时间: 2024-05-20 20:15:06 浏览: 9
这段代码使用了 Java 8 的 Stream API 对一个名为 students 的集合进行操作。首先,调用了 stream() 方法将该集合转换为一个流,接着调用了 filter() 方法,传入一个 Lambda 表达式作为参数,用于筛选出身高大于 155 的学生对象。然后,调用了 forEach() 方法,对每个满足条件的学生对象执行一个输出语句,输出该学生对象的信息。最后,代码块的右括号表示该 Lambda 表达式的结束。
相关问题
Student[] arr = students.stream().filter(a -> a.getHeight() > 170).toArray(len -> new Student[len]);解释一下这段代码
这段代码使用 Java 8 中的 Stream API,从一个名为 students 的 Student 类型的集合中筛选出身高大于 170 的学生,并将结果存储在一个名为 arr 的 Student 类型数组中。具体来说,filter() 方法用于筛选符合条件的元素,toArray() 方法用于将 Stream 转换为数组,len -> new Student[len] 表示创建一个长度为 len 的 Student 类型数组。
import java.util.Arrays; public class Task { public static void main(String[] args) { Student[] students = { new Student("王五", 1.6, 20), new Student("李四", 1.7, 19), new Student("赵六", 1.7, 20), new Student("tianqi", 1.8, 22), new Student("tianan", 1.8, 22), new Student("张三", 1.8, 18), new Student("王振", 1.6, 22), }; sortStudent(students); System.out.println("---------------------"); sortStudentByAgeDesc(students); } public static void sortStudentByAgeDesc(Student[] students) { // 请通过MyCompare的compareByAgeDesc方法实现按照年龄降序排序 /* TODO */ for (Student student : students) { System.out.println(student.getName() + ": " + student.getAge() + " -> " + student.getHeight()); } } public static void sortStudent(Student[] students) { // 请通过MyCompare类的compareStudent方法 // 实现按照年龄升序排序、再按照身高降序排序 /* TODO */ for (Student student : students) { System.out.println(student.getName() + ": " + student.getAge() + " -> " + student.getHeight()); } } }Lambda表达式:方法引用 任务 请在sortStudent方法中: 通过MyCompare类的compareStudent方法,以Lambda表达式的形式实现按照年龄升序排序、再按照身高降序排序 请在sortStudentByAgeDesc方法中 通过MyCompare的compareByAgeDesc方法实现按照年龄降序排序
可以使用Lambda表达式来实现按照年龄升序排序、再按照身高降序排序,代码如下:
public static void sortStudent(Student[] students) {
// 请通过MyCompare类的compareStudent方法
// 实现按照年龄升序排序、再按照身高降序排序
Arrays.sort(students, (s1, s2) -> {
if (s1.getAge() != s2.getAge()) {
return s1.getAge() - s2.getAge();
} else {
return Double.compare(s2.getHeight(), s1.getHeight());
}
});
for (Student student : students) {
System.out.println(student.getName() + ": " +
student.getAge() + " -> " +
student.getHeight());
}
}
在sortStudentByAgeDesc方法中,可以通过MyCompare的compareByAgeDesc方法实现按照年龄降序排序,代码如下:
public static void sortStudentByAgeDesc(Student[] students) {
// 请通过MyCompare的compareByAgeDesc方法实现按照年龄降序排序
Arrays.sort(students, MyCompare::compareByAgeDesc);
for (Student student : students) {
System.out.println(student.getName() + ": " +
student.getAge() + " -> " +
student.getHeight());
}
}
注意:在使用Lambda表达式时,需要使用Arrays.sort方法来进行排序,而不是自己实现排序算法。