Java,均匀地合并两个数组 [英] Java, merging two arrays evenly

查看:112
本文介绍了Java,均匀地合并两个数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

将两个不同长度的数组合并在一起以使它们均匀分布在新数组中的最佳方法是什么?

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆