Lambda表达式应用

任务目标

使用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);
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值