【发布时间】:2019-04-25 09:37:35
【问题描述】:
我有一个字符串数组列表totalVals。 totalVals 中的每个条目都是一个字符串 name 和一个双精度 loc 在插入数组列表之前连接成一个字符串,例如:
totalVals.add(name + "," + loc);
这就是我获得数据的方式。我已将这些值分成一个字符串和双精度数组,如下所示:
String[] temp;
String[] names = new String[totalVals.size()];
double[] locs = new double[totalVals.size()];
for (int i = 0; i < totalVals.size(); I++){
temp = totalVals.get(i).splot(",");
names[i] = temp[0];
locs[i] = Double.parseDouble(temp[1]);
}
但是,现在我想对数据进行排序并在返回之前将其放回数组列表中。我希望locs 数据按降序排列,我可以使用Arrays.sort(locs, Collections.reverseOrder()); 来做到这一点。但我不知道如何对 names 进行排序,以便名称仍然与它们原来的位置相关联。
totalVals 示例:{"Bahamas,32.2233","Zimbabwe,82.2443","India,56.2355","Australia,24.4363"}
将分为:
names = {"Bahamas","Zimbabwe","India","Australia"};
locs = {32.2233,82.2443,56.2355,24.4363};
然后将被排序到:
names = {"Zimbabwe","India","Bahamas","Australia"};
locs = {82.2443,56.2355,32.2233,24.4363};
那么我将如何对两个数组进行排序,以使两个数组中索引 i 处的关联保持不变?
【问题讨论】:
-
策略错误。不要拆分成两个数组,而是使用单个对象数组,其中每个对象都有一个名称和一个位置。然后对该数组进行排序。如果设计更好的话,这就是您首先应该收到的,而不是您需要解析的字符串。