Java,均匀地合并两个数组 [英] Java, merging two arrays evenly
问题描述
将两个不同长度的数组合并在一起以使它们均匀分布在新数组中的最佳方法是什么?
What would be the best way to merge two arrays of different lengths together so they are evenly distributed in the new array?
说我有以下数组
String[] array1 = new String[7];
String[] array2 = new String[2];
String[] mergedArray = new String[array1.length + array2.length];
我希望mergedArray具有以下元素
I would want mergedArray to have the following elements
array1 array1 array1 array2 array1 array1 array1 array2 array1
但是如果我要将数组的大小更改为
but if I were to change the size of the arrays to
String[] array1 = new String[5];
String[] array2 = new String[3];
String[] mergedArray = new String[array1.length + array2.length];
然后我希望它成为
array1 array2 array1 array2 array1 array2 array1 array1
array1 array2 array1 array2 array1 array2 array1 array1
如果可以帮助的话,基本上每个array2
元素都不应互相接触;如果array2
的大小大于array1
,则为例外.
basically if it can be helped each array2
element shouldn't be touching each other; exception if array2
has a size larger than array1
.
推荐答案
我同意用户Junaid的回答.这个想法是,您通过转义恒定数量的元素来将较小数组的元素分配到较大数组中.如果数组大小相等,则要在较大数组的所有连续元素之间分配较小数组的元素,这是实现方式,请遵循以下步骤:
I agree with user Junaid's answer. The idea is that, you are distributing elements of smaller array into the larger array by escaping a constant number of elements. If the arrays are equal in size, you are distributing elements of smaller array between the all consecutive elements of larger array, Here is the implementation, follow it please:
String[] array1 = new String[]{"d", "e", "f", "g", "h", "j", "k", "m"};
String[] array2 = new String[]{"a", "b", "c"};
int l1 = array1.length;
int l2 = array2.length;
int sectionSize = l1 / l2 + 1;
String[] mergedArray = new String[l1 + l2];
String[] larger = l1 > l2 ? array1 : array2;
String[] smaller = l1 < l2 ? array1 : array2;
int j = 0, k = 0;
for (int i = 1; i <= mergedArray.length; i++) {
if (i % sectionSize == 0)
mergedArray[i - 1] = smaller[j++];
else
mergedArray[i - 1] = larger[k++];
}
这篇关于Java,均匀地合并两个数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!