DESKTOP-0FT47VC_20200903-罗贤丞

问题

使用匿名类实现比较器接口

解决

package anonymous;

import java.time.LocalDate;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Random;

public class CustomerTest {

    public static void main(String[] args) {

        final Random random = new Random();

        final Customer[] customers = new Customer[5];

        // 使用循环对 customers 数组进行初始化
        for (int i = 0; i < customers.length; i++) {
            // 随机产生 年份、月份、日期,并将据此创建 LocalDate 对象中
            int y = random.nextInt(2019);
            int m = random.nextInt(11);
            int d = random.nextInt(27);
            LocalDate localDate = LocalDate.of(y + 1, m + 1, d + 1);
            // 在这里创建 Customer 对象

            customers[i] = new Customer(m, "yiyi", '男', localDate);

        }

        // 使用循环输出排序前的 customers
        for (int i = 0; i < customers.length; i++) {
            System.out.println(customers[i]);
        }
        // 使用 【匿名类】实现 比较器接口 ,以便于按照 Customer 的 birthdate 升序排序
        Comparator<Customer> comparator = new Comparator<Customer>() {

            @Override
            public int compare(Customer a, Customer b) {
                if (a.getBirthdate().getYear() < b.getBirthdate().getYear()) {
                    return -1;
                } else if (a.getBirthdate().getYear() == b.getBirthdate().getYear()) {
                    return 0;
                } else {
                    return 1;
                }

            }

        };

        Arrays.sort(customers, comparator); // 用比较器排序

        // 使用循环输出排序后的日期
        for (int j = 0; j < customers.length; j++) {
            System.out.println(customers[j]);
        }

    }
}

吐槽

今天学的还行吧,继续加油努力!!!