本文共 1585 字,大约阅读时间需要 5 分钟。
Java数组动态扩容实现 Java数组在使用中的动态扩容
了解如何在使用Java数组时动态扩容是非常重要的技能。数组在使用中可能会因数据量增加而超出原有容量,这时候就需要通过扩容来处理这种情况。这一过程通常采用替换旧数组的方式,确保应用程序能够平滑运行。
一、数组复制的过程
数组复制是实现动态扩容的基础操作。在一些场景下,我们需要将数据从一个数组复制到另一个数组中。System.arraycopy方法提供了很大的帮助。
// 将arr1复制到arr2中,起始位置为0,复制长度为原数组长度 System.arraycopy(arr1, 0, arr2, 0, arr1.length);另一种情况是将arr1中的元素从索引1开始复制到arr2中,开始在索引1的位置。这时需要注意数组的边界问题。
// 示例:从索引1开始复制,确保不越界 System.arraycopy(arr1, 1, arr2, 1, arr1.length - 1);二、数组扩容的实现方法
生产环境中常需要对数组进行扩容。这个过程大致包括新建一个更大的数组,并将原数组的内容复制到新数组中。
public class ArrayUtil { public static Object[] dilatation(Object[] array) { // 创建新数组,长度为原数组的两倍 Object[] result = new Object[array.length * 2]; // 复制原数组的所有元素到新数组中 System.arraycopy(array, 0, result, 0, array.length); // 将原数组引用替换为新数组中的内容 return result; } }三、实际示例
public class ArrayTest { public static void main(String[] args) { // 创建一个初始长度为5的数组 Object[] arr = new Object[5]; // 初始化数组内容 for (int i = 0; i < 5; i++) { arr[i] = i + 1; } // 扩容到长度为10 arr = ArrayUtil.dilatation(arr); // 该方法自动扩容后,new的数组长度为原来两倍 // 现在数组大小为10,检查索引是否越界 arr[6] = 10; // 有效索引 // 遍历数组输出内容 for (Object num : arr) { System.out.println(num); } } }
转载地址:http://gqspz.baihongyu.com/