tre*_*ree 2 java sorting collections
我有一份清单List<Object[]>.
Object []具有以下对象:
我可以在之后dd.MM.yyyy和之后对列表进行排序String.现在我想在时间之后对它进行排序,结果也应该排序为"dd.MM.yyyy",排序"字符串",排序"时间".
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;
}
});
Run Code Online (Sandbox Code Playgroud)
我怎样才能让它发挥作用?
你的问题是:错误的抽象.
如果您拥有属于一起的"数据",那么您可以将其转换为类.
含义:您不是将三个列表与数据保持在一起,而是创建一个合理地"包裹"这三个信息的类.然后创建该类的数组/列表.
因为这样您就可以轻松创建不同的 Comparator对象来比较该类的对象 - 例如,通过查看不同的字段.
换句话说:您(或多或少)使用平面数据编写"程序"代码,以及"组合"平面数据的"外部"代码.但是当使用诸如Java之类的OO语言时,您应该努力创建有用的抽象.
但是如果你想继续你的方法,看看这个伪代码:
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;
Run Code Online (Sandbox Code Playgroud)
(显然你需要在这里和那里进行一些演员表,但是由于你的输入没有使用它们,我也把它排除在外)
| 归档时间: |
|
| 查看次数: |
145 次 |
| 最近记录: |