gpt4 book ai didi

java - 如何对对象列表进行排序

转载 作者:行者123 更新时间:2023-12-02 09:16:17 25 4
gpt4 key购买 nike

假设我有一个测试列表如下:

    public class Test {
public static enum Unit {
DAY, WEEK, MONTH, YEAR /* , DAY_TO_DAY */
}

private int value;
private Unit unit;
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public Unit getUnit() {
return unit;
}
public void setUnit(Unit unit) {
this.unit = unit;
}
}

我将有一个具有以下值的测试列表:

3天, 5个月, 5天, 6年, 6周, 12周,

我们的预期结果如下:

3天、5天、6周、12周、5个月、6年

目前,我创建的代码如下

Collections.sort(tests, new Comparator<Test >() {
@Override
public int compare(Test o1, Test o2) {
if(o1.getValue() > o2.getValue()) return 1;
if(o1.getValue() < o2.getValue()) return -1;
return 0;
}

但是,它仅按值排序,而不按单位排序。上述实现的结果是:

3天、5天、5个月、6周、6年12周。

请告诉我在这种情况下如何满足两个条件(单位和值)。谢谢。

最佳答案

您需要先转换为通用格式,然后再进行比较。由于天是最小的类型,因此您应该将要比较的两个实例转换为天数,然后据此进行比较。

但是您首先需要做一些消除歧义的工作。一个月有多长?是长于 30 天,还是短于 30 天,还是相同?

关于java - 如何对对象列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27590435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com