上一篇
📢 最新动态(2025年7月)
随着Java 21的普及,数组操作依然是开发中的高频需求,尽管集合框架(如ArrayList
)更灵活,但在性能敏感场景或遗留代码中,数组仍不可替代,本文将手把手教你5种数组元素插入方法,助你轻松应对各种业务场景!✨
虽然ArrayList
自动扩容很方便,但数组在以下场景更具优势:
int[] arr = {1, 2, 3}; int newElement = 99; // 创建新数组并拷贝 int[] newArr = new int[arr.length + 1]; System.arraycopy(arr, 0, newArr, 0, arr.length); newArr[newArr.length - 1] = newElement; System.out.println(Arrays.toString(newArr)); // [1, 2, 3, 99]
💡 适用场景:需要教学演示或理解底层原理时
int[] arr = {10, 20, 30}; arr = Arrays.copyOf(arr, arr.length + 1); arr[arr.length - 1] = 40; System.out.println(Arrays.toString(arr)); // [10, 20, 30, 40]
🌟 优点:代码更简洁,底层仍调用System.arraycopy
int[] arr = {5, 8, 12}; int insertIndex = 1; int newValue = 6; int[] result = new int[arr.length + 1]; System.arraycopy(arr, 0, result, 0, insertIndex); result[insertIndex] = newValue; System.arraycopy(arr, insertIndex, result, insertIndex + 1, arr.length - insertIndex); System.out.println(Arrays.toString(result)); // [5, 6, 8, 12]
⚠️ 注意:需要处理索引越界异常!
int[] original = {7, 14, 21}; int[] newArray = IntStream.concat( Arrays.stream(original), IntStream.of(28) ).toArray(); System.out.println(Arrays.toString(newArray)); // [7, 14, 21, 28]
🎯 适用场景:需要链式操作或与其他流操作配合时
int[] arr = {100, 200}; arr = (int[]) Array.newInstance( int.class, Array.getLength(arr) + 1 ); Array.setInt(arr, arr.length - 1, 300); System.out.println(Arrays.toString(arr)); // [0, 0, 300]
☢️ 警告:反射有性能损耗,仅用于特殊场景研究
方法 | 时间复杂度 | 代码可读性 |
---|---|---|
手动扩容 | O(n) | |
Arrays.copyOf | O(n) | |
Stream API | O(n) |
ArrayList
:除非有明确性能需求 int[][]
插入需要嵌套操作 // 错误示例:以为能自动扩容 int[] arr = new int[3]; arr[3] = 1; // 抛出ArrayIndexOutOfBoundsException
记住:Java数组长度固定,所有"扩容"都是创建新数组!
本文由 慕运盛 于2025-07-30发表在【云服务器提供商】,文中图片由(慕运盛)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/486696.html
发表评论