将两个数组合并在一起[重复]
Posted
技术标签:
【中文标题】将两个数组合并在一起[重复]【英文标题】:Merge two arrays together [duplicate] 【发布时间】:2013-05-20 06:08:20 【问题描述】:如何将两个数组合并/合并为一个? 我看到this 帖子,但是我需要一个可以连接两个不同数组的解决方案,它们都扩展了同一个类。例如 foo1 扩展对象和 foo2 扩展对象,那么我需要连接 foo1[] 和 foo2[] 到 Object[] 数组。
【问题讨论】:
重复***.com/questions/80476/… ***.com/questions/80476/… 怎么不覆盖你?重复。 该问题的每个答案中提出的解决方案中有哪些部分无法在您的案例中实施? 由于找出正确的类型似乎是个问题,因此与我们分享更多关于此的想法可能是个好主意。 foo1 和 foo2 都扩展 Object 的机会在 java 中是相当高的。如果在所有这些情况下 Object[] 都是正确的选择,那么这个问题实际上是多余的...... 【参考方案1】:首先,java arrays
具有固定的内存和大小,因此要连接两个数组,您必须创建一个大小为 arrOne.length + arrTwo.length
的新数组,然后迭代数组的值并将它们添加到新数组。
Object[] arrThree = new Object[arrTwo.length + arrOne.length];
int index = arrTwo.length;
for (int i = 0; i < arrTwo.length; i++)
arrThree[i] = arrTwo[i];
for (int i = 0; i < arrOne.length; i++)
arrThree[i + index] = arrOne[i];
这将在没有任何额外的实用程序的情况下工作 - 纯 java。 arrOne
和 arrTwo
被认为是已经存在的。
【讨论】:
System.arraycopy(arrOne, 0, arrThree, 0, arrOne.length); System.arraycopy(arrTwo, 0, arrThree, arrOne.length, arrTwo.length);
哦,谢谢。不知道那件事。示例在这里 -tutorialspoint.com/java/lang/system_arraycopy.htm - 以防 TS 想看到它。但是,对于 TS 来说,仍然不清楚。【参考方案2】:
你可以使用
ArrayUtils.addAll 方法。根据文档
将给定数组的所有元素添加到一个新数组中。
新数组包含array1的所有元素,后跟所有的 元素数组2。当一个数组被返回时,它总是一个新的 数组。
所以你可以像这样使用
resultArray[] = ArrayUtils.addAll(firstArray, SecondArray);
【讨论】:
【参考方案3】:为什么不创建一个对象类型的数组,它是 foo1[] 的组合长度 + foo2[] 的长度。然后迭代每个数组并添加到 Object[] 或使用您提供的链接中的答案:How can I concatenate two arrays in Java?
或者最好还是使用 ArrayList 并使用 .addAll() 方法
【讨论】:
【参考方案4】:一个班轮解决方案:
Object[] both = ArrayUtils.addAll(array1,array2);
【讨论】:
可能想提一下ArrayUtils
的来源。
哦,对了——commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/…。仅当您拥有 commons.lang 时才有效【参考方案5】:
创建您的 Object[] 数组,然后在您的 foo1[] 上执行第一个循环以手动添加到 object[],然后重复 foo2[]。
野蛮人,但简单高效
【讨论】:
以上是关于将两个数组合并在一起[重复]的主要内容,如果未能解决你的问题,请参考以下文章