按相反顺序按内部对象(字符串、日期等)对 ArrayList<Object[]> 进行排序
Sorting ArrayList<Object[]> by objects inside (String, Date, etc.) in reverse order
假设有一个ArrayList<Object[]>
,里面包含各种对象:
ArrayList<Object[]> list = new ArrayList<>();
list.add(new Object[]{"cat", (long)1422355945});
list.add(new Object[]{"dog", (long)1422355970});
list.add(new Object[]{"rat", (long)1422355900});
我们如何才能有效地按照第一个Object
(即String
)的倒序对这个列表进行排序?并在第二个 Object
(即 long
)之前做同样的事情?
只需创建一个比较器,类似于下面的示例:
List<Object[]> list = new ArrayList<>();
list.add(new Object[] { "cat", (long) 1422355945 });
list.add(new Object[] { "dog", (long) 1422355970 });
list.add(new Object[] { "rat", (long) 1422355900 });
Collections.sort(list, new Comparator<Object[]>() {
@Override
public int compare(Object[] o1, Object[] o2) {
int cmp1 = ((String) o1[0]).compareTo((String) o2[0]);
if (cmp1 == 0) {
return Long.compare((Long) o1[1], (Long) o2[1]);
}
return cmp1;
}
});
假设有一个ArrayList<Object[]>
,里面包含各种对象:
ArrayList<Object[]> list = new ArrayList<>();
list.add(new Object[]{"cat", (long)1422355945});
list.add(new Object[]{"dog", (long)1422355970});
list.add(new Object[]{"rat", (long)1422355900});
我们如何才能有效地按照第一个Object
(即String
)的倒序对这个列表进行排序?并在第二个 Object
(即 long
)之前做同样的事情?
只需创建一个比较器,类似于下面的示例:
List<Object[]> list = new ArrayList<>();
list.add(new Object[] { "cat", (long) 1422355945 });
list.add(new Object[] { "dog", (long) 1422355970 });
list.add(new Object[] { "rat", (long) 1422355900 });
Collections.sort(list, new Comparator<Object[]>() {
@Override
public int compare(Object[] o1, Object[] o2) {
int cmp1 = ((String) o1[0]).compareTo((String) o2[0]);
if (cmp1 == 0) {
return Long.compare((Long) o1[1], (Long) o2[1]);
}
return cmp1;
}
});