如何在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
相关产品推荐
相关产品推荐

