java如何使用各自的数组ID或值对数组进行排序?
我有两个阵列:
String [] ids= new String [5];
String [] points= new String [5];
String one="a,b,c,d,e";
//or
String one="nepal,japan,finland ,brazil,spain";
String two="100,500,200,400,300";
ids= one.split(",");
points= two.split(",");
现在我想按降序对points
进行排序,就像这样
500,400,300,200,100 with respective ids b,d,e,c,a
我该怎么做
但我试着按降序排列,这是可以的,但是如何用各自的id排列id
Arrays.sort(points, Collections.reverseOrder());
Arrays.toString(points);
或者
Arrays.sort(points);
如果我像ids一样做,它也在下降。但这不是产出
编辑:
如果我有替换
a、b、c、d、e致发明人姓名或时间的信函
String one="a,b,c,d,e";
// or
String countries = "nepal,japan,finland,brazil,spain";
// or
String time="0:10,1:25,4:00,2:10,0:55";
# 1 楼答案
您可以定义自己的
Comparator
,类似这样:主要内容如下:
输出:
编辑:
作为一个通用类,下面是具有通用实现的同一个类:
主要问题是:
输出:
# 2 楼答案
Arrays.sort()
将只对给定的一个数组进行排序。我将创建一个同时具有id
和point
字段的类,该类的一个数组(或集合),并对该数组进行排序。您还必须实现comparable
或者,可以在两个数组之间进行映射。对
points
数组排序,然后对ids
数组重新排序以匹配映射。(这稍微贵一点,但可能更容易理解。)# 3 楼答案
定义一个自定义类(或一对<;T1,T2>;之类的泛型类),并定义一个按第一个值排序的比较器。然后可以执行Arrays.sort(arrayOfPairs,pairComparator)