gpt4 book ai didi

java - 将 List 排序在三个对象之后

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

我有一个 list List<Object[]>

Object[] 具有以下对象:

  • 日期“dd.MM.yyyy”
  • 字符串
  • 日期“HH:mm”。

我可以在 dd.MM.yyyy 之后对列表进行排序然后在String之后。现在我也想在时间之后对其进行排序,结果也应该排序为“dd.MM.yyyy”,排序为“String”,排序为“time”。

Collections.sort(resultList, new Comparator<Object[]>() {
public int compare(Object[] o1, Object[] o2) {
int dateComparison = (( o2[0]).compareTo(o1[0]));
return dateComparison == 0 ? ( o1[1]).compareTo( o2[1]) : dateComparison;
}
});

我怎样才能让它工作?

最佳答案

您的问题是:错误抽象。

当您拥有属于一起的“数据”时,您可以将其转换为

含义:您不必创建一个包含数据的三个列表,而是创建一个合理地“包装”这三个信息的类。然后创建该的数组/列表。

因为这样您就可以轻松创建不同比较该类对象的比较器对象 - 例如通过查看不同字段。

换句话说:您(或多或少)正在使用平面数据编写“过程”代码,以及“组合”该平面数据的“外部”代码。但是,当使用 Java 等面向对象语言时,您应该努力创建有用的抽象。

但是如果您想继续使用您的方法,请查看以下伪代码:

int dateComparison = o2[0].compareTo(o1[0]);
if (dateComparison != 0) return dateComparison;

int stringComparison = o2[1].compareTo(o1[1]);
if (stringComparison != 0) return stringComparison;

int secondDateComparison = o2[2].compareTo(o1[2]);
return dateComparison;

(显然你需要在这里和那里进行一些强制转换,但由于你的输入没有使用它们,所以我也将其省略)

关于java - 将 List<Object[]> 排序在三个对象之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45186159/

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