嗨我需要在java中对数组二维进行排序,但我需要通过我的数组中的索引进行排序 我的数组是
String arr[][]={ {"joun","1525565","10"},
{"ALI","15256562","100"},
{"FATEH","1525534","20"} };
我需要按索引号2对数组进行排序 输出是
String arr[][]={ {"ALI","15256562","100"},
{"FATEH","1525534","20"},
{"joun","1525565","10"} };
我的订单必须是100,然后是20,然后是10
我试图把这个代码放在java中把程序弄错的问题从索引1和2中搞砸了 我用里面的循环 Arrays.sort(ARR [I])
答案 0 :(得分:5)
在Java 8中,您可以将其编写为按索引2
排序,以便使用
Arrays.sort(arr, Comparator.comparing(row -> -Long.parseLong(row[2])));
或
Arrays.sort(arr, Comparator.comparing((String[] row) -> Long.parseLong(row[2]))
.reversed());
升序为String而不是数字。
Arrays.sort(arr, Comparator.comparing(row -> row[2]));
这会订购10, 100, 20
,但如果您在较短的字符串之前填写更长的字符串。
Arrays.sort(arr, Comparator.comparing((String[] row) -> row[2].length()).reversed()
.thenComparing(row->row[2]));
这会将订单设为100, 10, 20
BTW:我不知道为什么第一个row
需要给出的类型。
如果您想按号码排序,可以
Arrays.sort(arr, Comparator.comparing(row -> Long.parseLong(row[2])));
这会使10, 20, 100
按升序排列。
在Java 8中,您可以添加一个匿名内部类来执行相同的操作。
答案 1 :(得分:1)
以下是Comparator的解决方案:
public class SortTest {
public static void main(String[] args) {
String arr[][]={ {"joun","1525565","10"},
{"ALI","15256562","100"},
{"FATEH","1525534","20"} };
Arrays.sort(arr, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
return Integer.parseInt(o2[2]) - Integer.parseInt(o1[2]);
}
});
for (String[] item : arr) {
System.out.println(Arrays.toString(item));
}
}
}