Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,当另一个数组按升序排序时,更改一个数组的值_Java_Arrays_Sorting - Fatal编程技术网

在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