gpt4 book ai didi

具有不同排序选项的 Java 自定义比较器

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:47:52 25 4
gpt4 key购买 nike

我有一个 Item 类,它有两个属性 - id 和 timestamp。有一个自定义比较器类可以根据时间戳对 itemList 进行排序。

有没有一种方法可以使用比较器类,以便我可以指定按时间戳排序或按 ID 排序?

项目类别:

   public class  Item {

private Integer id;
private Date timestamp;

}

比较器:

public class ItemComparator implements Comparator<Item>{
@Override
public int compare(Item mdi1, Item mdi2) {

return mdi1.getTimestamp().compareTo(mdi2.getTimestamp());

}

}

排序代码:

 Collections.sort(itemList, new ItemComparator());

我也可以使用相同的比较器按 Id 对列表进行排序吗?

最佳答案

经过一些修改,是的。

添加一个带有枚举参数的构造函数来定义要使用的字段:

public class ItemComparator implements Comparator<Item>{
public enum Field {
ID, TIMESTAMP;
}

private Field field;

public ItemComparator(Field field) {
this.field = field;
}

然后在比较方法中,switch选择的字段:

@Override
public int compare(Item mdi1, Item mdi2) {
int comparison = 0;
switch(field) {
case TIMESTAMP:
comparison = mdi1.getTimestamp().compareTo(mdi2.getTimestamp());
case ID:
comparison = mdi1.getID() - mdi2.getID();
}
return comparison;
}

关于具有不同排序选项的 Java 自定义比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19688247/

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