所以我想合并数组并保留任何重复的数字,并且还想保持它们从低到高的顺序。我是新手,所以我不太了解,感谢您的帮助。
这是一个例子
数组 1 = 1,2,2,3,8,9
数组 2 =3,4,8,9
合并结果 = 1,2,2,3,3,4,8,8,9,9
另一个例子
数组 1 = 1,1,2,7,9
数组 2 = 2,9,10,15
合并结果 = 1,1,2,2,7,9,9,10,15
如果您需要任何其他信息,请询问我,我会尽力做到。
最佳答案
解决该问题的最简单方法是将其分解为更小的部分:
- 将两个数组合并为一个(新)数组
- 将新数组按升序排序(即从最低到最高)
鉴于 arr1
和 arr2
是一些 int[]
变量,其数字可能重复也可能不重复,您可以通过以下方式组合这两个数组创建一个长度为 arr1.length + arr2.length 的新 int[] 数组,然后复制这些值。 Java 数组的新手将受益于使用 for
循环进行手动迭代,但一旦您熟悉了数组,System.arraycopy
方法也很好:
int[] combo = new int[arr1.length + arr2.length];
for (int i = 0; i < arr1.length; i++)
{
combo[i] = arr1[i];
}
// or replace the loop with System.arraycopy(arr1, 0, combo, 0, arr1.length);
for (int i = 0; i < arr2.length; i++)
{
combo[arr1.length + i] = arr2[i]; // the index is offset by arr1.length to avoid overwriting the previous values from arr1
}
// or System.arraycopy(arr2, 0, combo, arr1.length, arr2.length);
要将新数组按升序排序,内置的 Arrays.sort
将起作用:
import java.util.Arrays;
...
Arrays.sort(combo);
有关 System.arraycopy
如何工作的文档可以在 http://docs.oracle.com/javase/7/docs/api/java/lang/System.html 找到。 .
关于java - 如何合并数组并保留中继器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20206273/