文
章
目
录
章
目
录
Java 数组是固定大小的数据结构,一旦初始化,数组的大小就无法更改。但是,在需要改变数组大小的情况下,我们必须遵循本教程中提供的方法之一。
1.使用java.util.Arrays.copyOf()
copyOf(originalArray, newLength)
方法接受一个数组和新的数组长度。copyOf()
创建一个具有所需新长度的新数组,并使用 System.arraycopy()
函数将 originalArray
复制到新数组中。
如果新数组的大小比原数组小,则 copyOf()
截断剩余的项目;如果新数组的大小比原数组大,则用 null
填充剩余的索引。结果数组与原始数组的类型完全相同。
请注意,copyOf() 方法仅调整一维数组的大小。对于调整多维数组的大小,没有通用解决方案,我们需要提供自己的逻辑。
String[] originalArray = {"A", "B", "C", "D", "E"};
String[] resizedArray = Arrays.copyOf(originalArray, 10);
resizedArray[5] = "F";
System.out.println(Arrays.toString(resizedArray));
//[A, B, C, D, E, F, null, null, null, null]
很少有其他 API 可以调整数组大小,但在内部它们遵循相同的方法,因此我们可以跳过它们。
2.使用 ArrayList
另一种方法是重新思考您的设计。如果 ArrayList 更适合这种用例,那么考虑在数组的位置使用 List。
列表已经是动态可调整大小的,允许基于索引的访问,并提供出色的性能。
String[] originalArray = {"A", "B", "C", "D", "E"};
ArrayList<String> list = new ArrayList<>(Arrays.asList(originalArray));
list.add("F");
System.out.println(list);
//[A, B, C, D, E, F]
3.结论
在Java中,调整数组大小与其他编程语言没有什么不同。调整大小的过程分配一个具有指定大小的新数组,将元素从旧数组复制到新数组,然后用新数组替换旧数组。
在Java中,我们不进行显式的内存管理,因此垃圾回收会处理旧数组,并在适当时释放内存。