代码之家  ›  专栏  ›  技术社区  ›  tryingmybest09

设置出生日期排序不正确

  •  0
  • tryingmybest09  · 技术社区  · 2 年前

    private static void zadanie5(List<Lekarz> lekarz) {
    
        System.out.println("Zadanie5");
        lekarz.stream()
                .sorted(Comparator.comparing(Lekarz::getDataUrodzenia, Comparator.nullsLast(Comparator.reverseOrder())))
                .limit(5)
                .forEach(System.out::println);
    

    当运行该方法时,将显示这5个人,尽管他们不是最年长的,该方法显示的最年长的人出生于1970年,其中文件中有1946年出生的人。

    导入的医生文本文件如下所示: (医生ID、姓氏、姓名、专业、出生日期、NIP编号、Pesel编号)

    Id_lekarza  Nazwisko    Imie    Specjalnosc Data_urodzenia  NIP           PESEL
        23         Kadaj    Monika  laryngolog  1965-03-16    879-122-69-94 65031687654
    

    你能告诉我这里可能存在什么问题,以及我如何解决排序问题吗?

    谢谢

    1 回复  |  直到 2 年前
        1
  •  1
  •   Moraban    2 年前

    我认为您遇到的问题是订单。当您使用该方法时 Comparator.reverseOrder() 你会得到从大到小的数字。对于老年人来说,出生年份将变短。例如,2020年比1952年多,尽管1952年出生的人年龄更大。

    lekarz.stream().sorted(Comparator.comparing(Lekarz::getDataUrodzenia, Comparator.nullsLast(Comparator.naturalOrder())))
                    .limit(5)
                    .forEach(System.out::println);