Java 如何从两个数组中交替使用字符?

Java 如何从两个数组中交替使用字符?,java,arrays,Java,Arrays,我需要帮助了解如何组合两个字符数组,然后在新数组中替换元素。给定的数组可以是不同的长度,例如:char1=[B,D]char2=[c,R,5]输出应该是char3=[B,c,D,R,5] char[]ch3=新字符[ch1.length+ch2.length]; 整数计数=0; int count2=0; 对于(int i=0;i

我需要帮助了解如何组合两个字符数组,然后在新数组中替换元素。给定的数组可以是不同的长度,例如:char1=[B,D]char2=[c,R,5]输出应该是char3=[B,c,D,R,5]

char[]ch3=新字符[ch1.length+ch2.length];
整数计数=0;
int count2=0;
对于(int i=0;i%
余数运算符

公共静态int[]alternate(int[]a1,int[]a2){
int[]a3=新的int[a1.length+a2.length];
对于(inti1=0,i2=0,i3=0;i3
测验

System.out.println(Arrays.toString(可选)(
新的int[]{1,2,3},
新的int[]{44,55,66,77,88});
System.out.println(Arrays.toString(alternate(
新int[]{44,55,66,77,88},
新的int[]{1,2,3}));
输出

[1,44,2,55,3,66,77,88]
[44, 1, 55, 2, 66, 3, 77, 88]

更新

此算法可以轻松增强以合并多个阵列:

公共静态int[]替换(int[]数组){
int[]result=newint[Stream.of(array).mapToInt(a->a.length).sum();
int[]ai=newint[arrays.length];
对于(int j=0;j
试验

System.out.println(Arrays.toString(可选)(
新的int[]{1,2,3},
新int[]{44,55,66,77,88},
新int[]{12,34},
新的int[]{5,6,7,8});
输出

[1,44,12,5,2,55,34,6,3,66,7,77,8,88]

更新2

也可以对集合执行此操作:

@SafeVarargs
公共静态列表替换(Iterable类似于解决方案,但不需要慢速
%
余数运算符

公共静态int[]alternate(int[]a1,int[]a2){
int[]a3=新的int[a1.length+a2.length];
对于(inti1=0,i2=0,i3=0;i3
测验

System.out.println(Arrays.toString(可选)(
新的int[]{1,2,3},
新的int[]{44,55,66,77,88});
System.out.println(Arrays.toString(alternate(
新int[]{44,55,66,77,88},
新的int[]{1,2,3}));
输出

[1,44,2,55,3,66,77,88]
[44, 1, 55, 2, 66, 3, 77, 88]

更新

此算法可以轻松增强以合并多个阵列:

公共静态int[]替换(int[]数组){
int[]result=newint[Stream.of(array).mapToInt(a->a.length).sum();
int[]ai=newint[arrays.length];
对于(int j=0;j
试验

System.out.println(Arrays.toString(可选)(
新的int[]{1,2,3},
新int[]{44,55,66,77,88},
新int[]{12,34},
新的int[]{5,6,7,8});
输出

[1,44,12,5,2,55,34,6,3,66,7,77,8,88]

更新2

也可以对集合执行此操作:

@SafeVarargs

公共静态列表替换(IterableIt应该是
i
而不是
i Help us Help you-shar一些
ch1
ch2
的示例输入和您想要得到的结果这是否回答了您的问题?因此输入可以是不同大小的数组,然后输出应该是数组1(ch1)中的第一个元素)然后是阵列2的第一个元素(ch2)交替使用,所以它应该是
i
而不是
我帮助我们帮助您-为
ch1
ch2
共享一些示例输入,以及您希望得到的结果这是否回答了您的问题?因此输入可以是不同大小的数组,然后输出应该是数组1(ch1)中的第一个元素然后是阵列2的第一个元素(ch2)这个代码解决了我的问题,你介意帮我理解你的代码在做什么吗?我是Java的初学者,我不知道@oleg是什么意思。cherednik@Kides99请参阅:@Kides99对您来说最好使用PO
如果……否则
此代码对我的问题有效,您介意帮我了解您的cod吗e在做什么?我是Java初学者,我不确定@oleg是什么意思。cherednik@Kides99请参阅:@Kides99对您来说,最好使用PO
if…else
public static void main(String... args) {
    int[] one = { 1, 2, 3 };
    int[] two = { 44, 55, 66, 77, 88 };
    System.out.println(Arrays.toString(alternate(one, two)));
}

public static int[] alternate(int[] one, int[] two) {
    // result array length is sum of lengths of given arrays.
    int[] res = new int[one.length + two.length];

    // i - result array iterator
    // j - one array iterator
    // k - two array iterarot
    for (int i = 0, j = 0, k = 0; i < res.length; i++) {
        // for even position we put next element from one array
        if (i % 2 == 0)
            // if one array has more elements - add it
            // if no more elements in one array, add next element from two array
            if (j < one.length)
                res[i] = one[j++];
            else
                res[i] = two[k++];
        // for odd position we put next element from two array
        else
            // if two array has more elements - add it
            // if no more elements in two array, add next element from one array
            if (k < two.length)
                res[i] = two[k++];
            else
                res[i] = one[j++];
    }

    return res;
}
[1, 44, 2, 55, 3, 66, 77, 88]