按名称和年龄降序按列表排序

我正在尝试使用 Java 8 按姓氏和年龄降序对列表进行排序 - 我可以对名字和年龄进行排序 - 但不能按名字和年龄降序排列。请帮忙。

const now = new Date();
const timezoneOffset = now.getTimezoneOffset() / 60;
const timezones = ['-07','-01','+03','+10'];
timezones.forEach(timezone => {
  const difference = +timezone + timezoneOffset;
  const time = new Date(now.getTime() + difference * 3600000);
  console.log(`Local time: ${time.toLocaleTimeString([],{ timeStyle: 'short',hour12: false })} ${time.toLocaleDateString([],{ month: '2-digit',day: '2-digit' })}`);
});
ning61 回答:按名称和年龄降序按列表排序

您是否希望姓名和年龄都降序?您的 reversed() 反转了之前的所有比较。如果您只想根据年龄进行反向操作,请按以下步骤操作。我通过使用一个只有名字的记录对其进行了一些简化。

record ABCE(String getFirstName,int getAge) {
}
    
public static void main(String[] args) {
    
    List<ABCE> list = List.of(new ABCE("A",10),new ABCE("B",12),new ABCE("C",10));
    
    // Sort by firstName ascending and then by age descending
    list = list.stream()
            .sorted(Comparator.comparing(ABCE::getFirstName)
                    .thenComparing(ABCE::getAge,Comparator.reverseOrder()))
            .collect(Collectors.toList());
    list.stream().forEach(System.out::println);
}

印刷品

ABCE[getFirstName=A,getAge=10]
ABCE[getFirstName=B,getAge=12]
ABCE[getFirstName=B,getAge=10]
ABCE[getFirstName=C,getAge=10]
本文链接:https://www.f2er.com/47049.html

大家都在问