在Java中,当另一个数组按升序排序时,更改一个数组的值
我有两个阵列:在Java中,当另一个数组按升序排序时,更改一个数组的值,java,arrays,sorting,Java,Arrays,Sorting,我有两个阵列: int[]arr1 int[]arr2 上述两个变量的大小均为n,这是用户输入 我需要使用java按升序排列arr2。如何更改与arr2对应的arr1值 示例(更多信息): 我希望输出的方式: arr1={4,1,3,2,5} arr2={1,3,5,6,9} 这里arr2已经排序了如果第二个数组中没有重复的数字,如提供的示例所示,则可以使用映射 首先,拿一张地图。将array2值放入映射中的键,将array1值放入映射中的值。然后根据这些值对地图进行排序。现在如果你从地
int[]arr1
int[]arr2
n
,这是用户输入
我需要使用java按升序排列arr2。如何更改与arr2
对应的arr1值
示例(更多信息):
我希望输出的方式:
- arr1={4,1,3,2,5}
- arr2={1,3,5,6,9}
这里arr2已经排序了如果第二个数组中没有重复的数字,如提供的示例所示,则可以使用
映射
首先,拿一张地图。将array2值放入映射中的键
,将array1值放入映射中的值
。然后根据这些值对地图进行排序。现在如果你从地图上拿到钥匙,你就会得到你想要的
使用。它不需要排序。它以这样的方式输入数据,以确保映射将以升序键顺序进行
Map<Integer, Integer> m = new TreeMap<>();
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = {3, 6, 5, 1, 9};
// Put array2 values as key parameter and array1 values as value parameter
for (int i = 0; i < arr1.length; i++) {
m.put(arr2[i], arr1[i]);
}
int i = 0;
// Print the sorted map
for (Map.Entry<Integer, Integer> entry : m.entrySet()) {
System.out.println("arr1["+ i +"] = " + entry.getValue());
i++;
}
我要做的是: 创建一个包含两个数字的类(一个来自
arr1
,另一个来自arr2
)。使其实现可比性并比较第二个数字。
公共类对实现了可比较的{
私有整数e1;
私有整数e2;
@凌驾
公共整数比较(o对){
返回getE1().compareTo(o.getE1());
}
}
在该方法中,创建一个Pair
列表,并用两个数组的元素填充,然后使用Collections
中的方法对其进行排序
int[]arr1={1,2,3,4,5};
int[]arr2={3,6,5,1,9};
ArrayList=新建ArrayList();
for(int i=0;i
你所说的是什么意思?我如何更改arr1的值与arr2的值相对应?你希望arr1
被排序?或者与arr2
相比以某种特定的顺序排列。我估计缺少一些信息。你能详细说明一下吗?另外,请提供你迄今为止所做的尝试。@iMan It co可以更好地解释,但我认为这里需要的是将两个数组平均地重新排列,以便arr2
结束排序。在示例中,两个数组都有第4个元素第一,第1个元素第二,等等。这确实有点难以解释。KVilla,向我们展示您迄今为止所做的尝试。您可以尝试手动排序arr2(而不是使用那种排序方法)然后每次你在arr2中更改某些内容时,你只需在arr1中进行相同的更改。@RayO'Kalahjan这是有道理的。让我们看看这是否是他的真正意思。:)请解释一下你想做的事情背后的逻辑。我不清楚为什么在排序后的arr1
中4排在第一位。如果有重复项怎么办?int[]arr2={1,2,2,2,2,2,3,4,5};int[]arr1={3,6,1,2,3,4,5,6,7,5,1,9};是的,你做对了。我忘了这个箱子。编辑了我的答案。谢谢
Map<Integer, Integer> m = new TreeMap<>();
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = {3, 6, 5, 1, 9};
// Put array2 values as key parameter and array1 values as value parameter
for (int i = 0; i < arr1.length; i++) {
m.put(arr2[i], arr1[i]);
}
int i = 0;
// Print the sorted map
for (Map.Entry<Integer, Integer> entry : m.entrySet()) {
System.out.println("arr1["+ i +"] = " + entry.getValue());
i++;
}
arr1[0] = 4
arr1[1] = 1
arr1[2] = 3
arr1[3] = 2
arr1[4] = 5