我想在它的下行第三列对String数组后代进行排序,问题是我想按它的数值排序。
示例:
如果我最初有这个数组:
String [][] array = new String[][] {
{"Barcelona", "156", "1604"},
{"Girona", "256", "97"},
{"Tarragona", "91", "132"},
{"Saragossa", "140", "666"}
}
我希望它成为这个:
{
{"Barcelona", "156", "1604"},
{"Saragossa", "140", "666"},
{"Tarragona", "91", "132"},
{"Girona", "256", "97"}
}
我该怎么做?
答案 0 :(得分:5)
按asc排序:
Arrays.sort(array, Comparator.comparingInt(a -> Integer.valueOf(a[2])));
按desc排序:
Arrays.sort(array, Comparator.comparingInt(a -> Integer.valueOf(a[2])*-1));
// or this
Arrays.sort(array, Comparator.comparingInt((String[] a) -> Integer.valueOf(a[2])).reversed());
答案 1 :(得分:4)
您可以实施自定义Comparator<String[]>
来执行比较。像,
String[][] array = new String[][] { { "Barcelona", "156", "1604" },
{ "Girona", "256", "97" }, { "Tarragona", "91", "132" },
{ "Saragossa", "140", "666" } };
Arrays.sort(array, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
return Integer.valueOf(o2[2]).compareTo(Integer.valueOf(o1[2]));
}
});
System.out.println(Arrays.deepToString(array));
哪些输出(根据要求)
[[Barcelona, 156, 1604], [Saragossa, 140, 666], [Tarragona, 91, 132], [Girona, 256, 97]]
另请参阅Object Ordering - The Java Tutorials(尤其是“编写自己的可比类型”小节)以获取更多信息。