任务目标
使用Lambda表达式进行排序,掌握如下知识:
掌握如下知识:
-
函数式接口
-
基于函数式接口的表达式运用
编程要求
1. 创建Java Application 项目,根包名称为项目名。
2. 给定 Student 类的定义如下
package 项目名.data; // 替换为自定义包
public class Student {
private String id;
private String name;
private String major;
public Student(String id, String name, String major) {
this.id=id;
this.name=name;
this.major=major;
}
@Override
public String toString() {
return "Student [id="+id+", name="+name+", major="+major+"]";
}
public String getId() {
return id;
}
public void setId(String id) {
this.id=id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name=name;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major=major;
}
}
3. 主类的编写
编写主类,类名为 Main,放置在包 项目名 中。
给定一个数组的定义:
Student[] students= {
new Student("20190201", "David", "Software Engineering"),
new Student("20190202", "Edward", "Software Engineering"),
new Student("20190101", "Zed", "Computer Science"),
new Student("20190102", "Bob", "Computer Science"),
new Student("20190103", "Charlie", "Computer Science"),
new Student("20190301", "Fred", "Data Science"),
};
-
定义上面的数组
-
按数组原始顺序输出数组内容
-
使用 Arrays.sort 方法和 基于 Comparator 接口的 Lambda 表达式
-
按学号升序排序并输出数组内容
-
按姓名升序排序并输出数组内容
-
按专业降序排序并输出数组内容
-
提交说明
将所有源程序文件压缩成zip文件提交。直接把项目目录下的 src 目录压缩成 zip 文件即可。
测试说明
测试样例1:
预期输出:
原始输出:
Student [id=20190201, name=David, major=Software Engineering]
Student [id=20190202, name=Edward, major=Software Engineering]
Student [id=20190101, name=Zed, major=Computer Science]
Student [id=20190102, name=Bob, major=Computer Science]
Student [id=20190103, name=Charlie, major=Computer Science]
Student [id=20190301, name=Fred, major=Data Science]
按学号排序后输出:
Student [id=20190101, name=Zed, major=Computer Science]
Student [id=20190102, name=Bob, major=Computer Science]
Student [id=20190103, name=Charlie, major=Computer Science]
Student [id=20190201, name=David, major=Software Engineering]
Student [id=20190202, name=Edward, major=Software Engineering]
Student [id=20190301, name=Fred, major=Data Science]
按姓名排序后输出:
Student [id=20190102, name=Bob, major=Computer Science]
Student [id=20190103, name=Charlie, major=Computer Science]
Student [id=20190201, name=David, major=Software Engineering]
Student [id=20190202, name=Edward, major=Software Engineering]
Student [id=20190301, name=Fred, major=Data Science]
Student [id=20190101, name=Zed, major=Computer Science]
按专业排序后输出:
Student [id=20190201, name=David, major=Software Engineering]
Student [id=20190202, name=Edward, major=Software Engineering]
Student [id=20190301, name=Fred, major=Data Science]
Student [id=20190102, name=Bob, major=Computer Science]
Student [id=20190103, name=Charlie, major=Computer Science]
Student [id=20190101, name=Zed, major=Computer Science]
// 文件名:Student.java
package lambdasortdemo.data;
public class Student {
private String id;
private String name;
private String major;
public Student(String id, String name, String major) {
this.id = id;
this.name = name;
this.major = major;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", major=" + major + "]";
}
// getter和setter方法
public String getId() { return id; }
public void setId(String id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getMajor() { return major; }
public void setMajor(String major) { this.major = major; }
}
// 文件名:Main.java
package lambdasortdemo;
import lambdasortdemo.data.Student;
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
// 初始化学生数组
Student[] students = {
new Student("20190201", "David", "Software Engineering"),
new Student("20190202", "Edward", "Software Engineering"),
new Student("20190101", "Zed", "Computer Science"),
new Student("20190102", "Bob", "Computer Science"),
new Student("20190103", "Charlie", "Computer Science"),
new Student("20190301", "Fred", "Data Science"),
};
// 输出原始顺序
System.out.println("原始输出:");
printStudents(students);
// 1. 按学号升序排序(学号是字符串,直接比较)
Arrays.sort(students, (s1, s2) -> s1.getId().compareTo(s2.getId()));
System.out.println("\n按学号排序后输出:");
printStudents(students);
// 2. 按姓名升序排序(姓名是字符串,直接比较)
Arrays.sort(students, (s1, s2) -> s1.getName().compareTo(s2.getName()));
System.out.println("\n按姓名排序后输出:");
printStudents(students);
// 3. 按专业降序排序(先按专业升序比较,再取反)
Arrays.sort(students, (s1, s2) -> -s1.getMajor().compareTo(s2.getMajor()));
System.out.println("\n按专业排序后输出:");
printStudents(students);
}
// 工具方法:打印学生数组
private static void printStudents(Student[] students) {
for (Student s : students) {
System.out.println(s);
}
}
}
671

被折叠的 条评论
为什么被折叠?



