我有我的
ArrayList<ArrayList<String>> list =
[["12","09","2017","Event n 1"],
["14","07","2017","Event n 2"],
["18","03","2017","Event n 3"]
]
我怎样才能将它排序为当天(2017年7月14日之后(2017年7月14日)和之后(2017年9月12日)的第一个列表)?
答案 0 :(得分:2)
您可以创建一个自定义比较器,将每个相关元素解析为int
,然后对它们进行比较:
list.sort(Comparator.comparingInt((List<String> x) -> Integer.parseInt(x.get(2)))
.thenComparingInt(x -> Integer.parseInt(x.get(1)))
.thenComparingInt(x -> Integer.parseInt(x.get(0))));
编辑:
如果你不能使用Java 8的功能,你仍然可以这样做,但它会有点笨拙:
Collections.sort(list, new Comparator<List<String>>() {
@Override
public int compare(List<String> o1, List<String> o2) {
int retVal = Integer.compare(getIntByIndex(o1, 2), getIntByIndex(o2, 2));
if (retVal != 0) {
return retVal;
}
retVal = Integer.compare(getIntByIndex(o1, 1), getIntByIndex(o2, 1));
if (retVal != 0) {
return retVal;
}
return Integer.compare(getIntByIndex(o1, 0), getIntByIndex(o2, 0));
}
private int getIntByIndex(List<String> sublist, int index) {
return Integer.parseInt(sublist.get(index));
}
});