You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ballerina中合并两个int数组及生成新数组?

两个int数组的合并与新数组创建方案

1. 合并两个int数组

合并指将两个数组的所有元素按顺序放入一个新数组中,以下是几种常用实现方式:

方法一:手动循环复制

最基础的实现方式,适合理解底层逻辑:

int[] arr1 = {1, 2, 3};
int[] arr2 = {4, 5, 6};
int[] mergedArr = new int[arr1.length + arr2.length];

// 复制第一个数组的元素到新数组
for (int i = 0; i < arr1.length; i++) {
    mergedArr[i] = arr1[i];
}
// 复制第二个数组的元素到新数组的后半段
for (int i = 0; i < arr2.length; i++) {
    mergedArr[arr1.length + i] = arr2[i];
}

方法二:使用System.arraycopy(高效原生方法)

JDK提供的原生复制方法,比手动循环效率更高:

int[] arr1 = {1, 2, 3};
int[] arr2 = {4, 5, 6};
int[] mergedArr = new int[arr1.length + arr2.length];

// 参数依次为:源数组、源起始位置、目标数组、目标起始位置、复制长度
System.arraycopy(arr1, 0, mergedArr, 0, arr1.length);
System.arraycopy(arr2, 0, mergedArr, arr1.length, arr2.length);

方法三:Java 8+ Stream API

用流式编程简化代码,可读性更好:

import java.util.stream.IntStream;

int[] arr1 = {1, 2, 3};
int[] arr2 = {4, 5, 6};

int[] mergedArr = IntStream.concat(IntStream.of(arr1), IntStream.of(arr2)).toArray();

2. 基于两个数组创建新数组

“基于两个数组创建新数组”可以覆盖多种场景,以下是常见的几种:

场景一:合并数组(同上述合并逻辑)

将两个数组的所有元素合并为一个新数组,具体实现参考第一部分的三种方法。

场景二:生成两数组的交集(去重)

提取同时存在于两个数组中的元素,生成新数组:

import java.util.HashSet;
import java.util.Set;

int[] arr1 = {1, 2, 3, 4};
int[] arr2 = {3, 4, 5, 6};

Set<Integer> tempSet = new HashSet<>();
for (int num : arr1) tempSet.add(num);

Set<Integer> intersectionSet = new HashSet<>();
for (int num : arr2) {
    if (tempSet.contains(num)) {
        intersectionSet.add(num);
    }
}

// 转换为int数组
int[] newArr = intersectionSet.stream().mapToInt(Integer::intValue).toArray();

场景三:对应位置元素运算生成新数组(需两数组长度相同)

对两个数组对应位置的元素进行加减乘等运算,生成新数组:

int[] arr1 = {1, 2, 3};
int[] arr2 = {4, 5, 6};
int[] newArr = new int[arr1.length];

// 这里示例为对应元素相加,可替换为减法、乘法等运算
for (int i = 0; i < arr1.length; i++) {
    newArr[i] = arr1[i] + arr2[i];
}

场景四:生成两数组的并集(去重)

提取两个数组的所有元素并去重,生成新数组:

import java.util.HashSet;
import java.util.Set;

int[] arr1 = {1, 2, 3};
int[] arr2 = {3, 4, 5};

Set<Integer> unionSet = new HashSet<>();
for (int num : arr1) unionSet.add(num);
for (int num : arr2) unionSet.add(num);

// 转换为int数组
int[] newArr = unionSet.stream().mapToInt(Integer::intValue).toArray();

内容的提问来源于stack exchange,提问作者Lakshan Weerasinghe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 20:08:11