gpt4 book ai didi

Java:如何对两个对应的数组进行排序?

转载 作者:行者123 更新时间:2023-11-30 07:44:22 24 4
gpt4 key购买 nike

我有两个数组:

First array:
25, 20, 50, 30, 12, 11...

Second Array:
New York, New Jersey, Detroit, Atlanta, Chicago, Los Angeles

第二个数组中的每两个城市对应第一个数组中的一个值。

示例:纽约和新泽西对应 25,底特律和亚特兰大对应 20,依此类推。

我想按降序重新排序第一个数组的数字(50、30、25、20...),但我也希望第二个数组的城市相应地移动,以便它们之前和之前具有相同的值排序后。

我该如何完成这个任务? (我可以使用 ArrayList 或 Array,以更简单的为准)

最佳答案

您可以使用TreeMap:

Map<Integer, String[]> map = new TreeMap<>();
for(int i=0;i<firstArray.length;i++){
map.put(firstArray[i], new String[]{secondArray[i * 2], secondArray[i*2+1]});
}

此 map 将按关键自然顺序排序。

但我建议你制作容器类。像这样的东西:

public class CityPair{
public int value;
public String[] cities = new String[2];
}

现在您可以用您的数据填充列表:

...   
ArrayList list = new ArrayList<CityPair>();

for(int i=0; i<firstArray.length; i++){
CityPair pair = new CityPair();
pair.value = firstArray[i];
pair.cities[0] = secondArray[i*2];
pair.cities[1] = secondArray[i*2+1];
list.add(pair);
}
...

如您所见,我没有检查索引是否“索引越界”,但您应该检查。之后您可以对列表进行排序。您可以使用例如 Bubble sort 手动执行此操作算法,但更好的方法是编写自定义比较器:

public class CityPairComparator implements Comparator<CityPair> {
@Override
public int compare(CityPair pair1, CityPair pair2) {
return Integer.compare(pair1.value, pair2.value);
}
}

现在您可以使用 Collections 实用程序类对列表进行排序:

Collections.sort(list, new CityPairComparator());

通过这种方法,您可以替换 String[] citiesCityPair ArrayList<Sting> cities 的类(class)。然后,它将能够为每个值添加两个以上的城市。

关于Java:如何对两个对应的数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34125725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com