基本上我有:
String[][] mda = {{"Hello ma", "3"},
{"How r u?", "2"},
{"i m fine", "5"}};
准确地说,我想根据它的数值对此数组进行排序,如下所示:
"How r u?", "2"
"Hello ma", "3"
"i m fine", "5"
问候< 3
答案 0 :(得分:5)
这样简单的事情应该可以解决问题。
String[][] mda = {{"Hello ma", "3"},
{"How r u?", "2"},
{"i m fine", "5"}};
public void test() {
System.out.println(Arrays.deepToString(mda));
Arrays.sort(mda, Comparator.comparing(s -> s[1]));
System.out.println(Arrays.deepToString(mda));
}
答案 1 :(得分:0)
你应该将它们放在Map中。您可以按键(整数)对它们进行排序,并按顺序访问它们的值(字符串)。
这看起来像是:
Map<Integer, String> myMap = new HashMap<>();
for (String[] tmp : myStrings)
{
myMap.put(Integer.parseInt(tmp[0]), tmp[1]);
}
答案 2 :(得分:0)
您应该使用比较器对特定索引的数组进行排序
String[][] mda = {{"Hello ma", "3"},
{"How r u?", "2"},
{"i m fine", "5"}};
Arrays.sort(mda, new Comparator<String[]>() {
@Override
public int compare(final String[] data1, final String[] data2) {
final String value1 = data1[1];
final String value2 = data2[1];
return value1.compareTo(value2);
}
});
for (final String[] str : mda) {
System.out.println(str[0] + " " + str[1]);
}
答案 3 :(得分:0)
Arrays.sort(mda, (o1, o2) -> Integer.parseInt(o1[1]) - Integer.parseInt(o2[1]) );
Arrays.stream(mda).forEach(l ->
{
System.out.println(Arrays.deepToString(l));
});
或者如果你喜欢这些流:
List<String[]> collect = Arrays.stream(mda)
.sorted((o1, o2) -> Integer.parseInt(o1[1]) - Integer.parseInt(o2[1]))
.collect(Collectors.toList());
collect.forEach(l ->
{
System.out.println(Arrays.deepToString(l));
});