java - 如何合并数组并保留中继器

标签 java arrays merge

所以我想合并数组并保留任何重复的数字,并且还想保持它们从低到高的顺序。我是新手,所以我不太了解,感谢您的帮助。

这是一个例子

数组 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

如果您需要任何其他信息,请询问我,我会尽力做到。

最佳答案

解决该问题的最简单方法是将其分解为更小的部分:

  1. 将两个数组合并为一个(新)数组
  2. 将新数组按升序排序(即从最低到最高)

鉴于 arr1arr2 是一些 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/

相关文章:

java - Libgdx 如何停止 for 循环,直到 actor 操作完成/完成

JAVA与服务器php通信

database - 如何合并 Drupal 数据库更改

git - 如果您仍然必须执行相同的步骤,那么 git merge 比 svn merge 有何优势?

javascript - 嵌套 forEach 意外覆盖

hibernate - 一对多关系的JPA更新列表

java - JBoss EAP 7 基本身份验证不起作用

java - 从不同 Elasticsearch 主机中的索引查询

Java,与数组的组合算法

arrays - 意外的数组大小