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

在初始化另一数组的指定位置时嵌入数组的实现方法

解决方案:动态合并数组实现需求

不用愁,针对这种需要动态嵌入未知长度数组的场景,Java里有好几种原生或第三方的实用方案,我给你整理了最靠谱的几个:

方法1:用Java原生System.arraycopy(推荐,无依赖且高效)

这是最基础也最高效的方式,手动计算总长度后分三次复制对应内容,完全适配arr1长度不确定的情况:

int[] arr1 = new int[] {3, 4, 5};
int[] prefix = new int[] {8, 7};
int[] suffix = new int[] {1, 0};

// 计算目标数组总长度
int totalLength = prefix.length + arr1.length + suffix.length;
int[] arr2 = new int[totalLength];

// 复制前缀到目标数组开头
System.arraycopy(prefix, 0, arr2, 0, prefix.length);
// 复制arr1到目标数组中间位置
System.arraycopy(arr1, 0, arr2, prefix.length, arr1.length);
// 复制后缀到目标数组末尾
System.arraycopy(suffix, 0, arr2, prefix.length + arr1.length, suffix.length);

// 此时arr2就是{8,7,3,4,5,1,0}

优点:纯原生API,不需要额外依赖,执行效率极高,适合对性能有要求的场景

方法2:用Java 8+ Stream API(代码更简洁优雅)

如果追求代码可读性和简洁度,Stream的方式会让逻辑看起来更直观:

import java.util.Arrays;
import java.util.stream.IntStream;

int[] arr1 = new int[] {3, 4, 5};
int[] arr2 = IntStream.concat(
        IntStream.concat(IntStream.of(8,7), Arrays.stream(arr1)),
        IntStream.of(1,0)
).toArray();

优点:代码行数少,逻辑一目了然;缺点:相比System.arraycopy,性能略低(差距很小,大部分业务场景可忽略)

方法3:用第三方工具库(比如Apache Commons Lang)

如果你的项目已经引入了Apache Commons Lang库,可以用ArrayUtils.addAll来快速实现链式合并:

import org.apache.commons.lang3.ArrayUtils;

int[] arr1 = new int[] {3, 4, 5};
int[] arr2 = ArrayUtils.addAll(ArrayUtils.addAll(new int[]{8,7}, arr1), new int[]{1,0});

优点:代码极简,几乎不用自己写逻辑;缺点:需要引入第三方依赖(如果项目没用到的话就没必要特意加)

这几个方案都能完美适配arr1长度未知的情况,你可以根据自己的项目环境选最合适的~

内容的提问来源于stack exchange,提问作者Coding Mason

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 15:07:37