在 Java 中增加数组大小
本文介绍如何在 Java 中增加数组大小。你还有一些示例代码可以帮助你理解该主题。
Java 中的数组是相同类型数据的有限集合。数组大小固定,创建后不能修改长度。这是因为数组作为连续数据块
存储在内存中。
用户必须预先定义它们的大小以确保所需的内存量是连续可用的。在本指南中,你将了解解决数组固定长度问题的不同方法。
让我们首先看看当我们尝试将元素添加到没有额外空间的数组时会发生什么。我们通常通过访问其索引将项目添加到数组中。如果我们尝试使用下一个索引将项目添加到已经满的数组,Java 将返回一个 ArrayIndexOutOfBoundsException
。
以下代码是此类场景的示例。
public class Main
{
public static void main(String[] args)
{
int[] arr = new int[3];
arr[0] = 5;
arr[1] = 10;
arr[2] = 15;
arr[3] = 20;//Index 3 is out of bounds
}
}
输出:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
at abc.Demo.main(Demo.java:13)
现在让我们尝试了解如何克服这个问题。
在 Java 中通过创建另一个新数组来增加数组大小
数组固定大小的一个简单解决方案是创建另一个更大的数组。
我们可以使用计数器变量来跟踪插入数组的元素数量。每当这个数字等于数组的长度(表示数组已满)时,我们就可以创建一个比原始数组大一倍的新数组。
接下来,我们将所有元素从原始数组转移到新数组,并且仍然有一个新元素的额外空间。如果我们收到一个新元素并且没有足够的空间来容纳它,我们可以重复这个过程。
考虑以下代码,我们创建了一个长度为 5
的数组,并尝试在其中插入 7
个元素。每当数组变满时,我们就使用 increaseSize()
方法增加其大小。
public class Main
{
public static int[] increaseSize(int[] arr)
{
int[] newArr = new int[arr.length + 1];//Creating a new array with space for an extra element
for(int i = 0; i < arr.length; i++)
{
newArr[i] = arr[i];//Copying the elements to the new array
}
return newArr;
}
public static void main(String[] args)
{
int[] arr = new int[5];
int counter = 0;
for(int i = 0; i <= 6; i++)
{
if(counter == arr.length)
{
arr = increaseSize(arr);
}
arr[i] = i*2;
counter += 1;
}
for(int i=0; i<arr.length; i++)
{
System.out.print(arr[i]+" ");
}
}
}
输出:
0 2 4 6 8 10 12
使用 Java 中的 Arrays.copyOf()
方法增加数组大小
Java 有一个内置的 copyOf()
方法,它可以创建一个更大的新数组,并将我们的旧数组元素复制到新数组中。
copyOf()
函数属于 Arrays
类。此方法的语法如下所示。它返回一个具有上述长度的数组,其中包含原始数组的所有元素。
copyOf(originalArray, newLength)
下面的代码与上面提到的类似。唯一的区别是我们使用 copyOf
方法而不是 increaseSize()
方法。
import java.util.Arrays;
public class Main
{
public static void main(String[] args)
{
int[] arr = new int[5];
int counter = 0;
for(int i = 0; i <= 6; i++)
{
if(counter == arr.length)
{
int[] newArr = Arrays.copyOf(arr, arr.length + 1);
arr = newArr;
}
arr[i] = i*2;
counter += 1;
}
for(int i=0; i<arr.length; i++)
{
System.out.print(arr[i]+" ");
}
}
}
输出:
0 2 4 6 8 10 12
在 Java 中使用 ArrayList
数组增加数组大小
ArrayList
是一个在 java.util
包中的动态数组,它实现了 List
接口。与普通数组不同,ArrayList
具有可变长度。
Java 会自动处理这个动态数组的大小,我们不用担心数组空间不足。它的默认大小是 10
个元素,但如果添加更多元素,它的大小会增加。
下表解释了数组和 ArrayList
之间的一些主要区别。
大批 | 数组列表 |
---|---|
数组不可调整大小,并且在创建后将始终具有固定长度。 |
ArrayList 是一个可变大小的数组,如果需要额外的空间,它的大小会动态增加。 |
数组可以包含原始数据类型和对象。 |
ArrayList 只能存储对象,不能存储原始数据类型。原始数据类型在将它们添加到列表之前被转换为相应的对象。 (整数到整数,双倍到双倍) |
数组的性能优于 ArrayList ,因为可以在恒定时间内使用索引添加、删除或获取元素。 |
ArrayLists 比数组稍慢,因为如果我们需要额外的空间,它们需要调整大小。 |
可以通过使用其索引来访问元素。 |
有像 get() 、set() 或 add() 这样的专用方法来访问和修改 ArrayList 中的元素。我们不能直接使用方括号中的索引来访问元素。 |
以下代码解释了如何使用 ArrayLists
并执行基本操作,例如添加元素、修改元素和打印列表值。
import java.util.ArrayList;
public class Main
{
public static void main(String[] args)
{ //Creating a new ArrayList to hold Integer values
ArrayList<Integer> arrList = new ArrayList<Integer>();
//Adding elements 5, 10, 15 and 20 to the ArrayList
arrList.add(5);
arrList.add(10);
arrList.add(15);
arrList.add(20);
//Printing the ArrayList
System.out.println(arrList);
//Adding an element 7 at index 2. This will shift the rest of the elements one place to the right
arrList.add(2, 7);
System.out.println(arrList);
//Fetching the element at index 3
System.out.println(arrList.get(3));
//Changing the element present at index 1 to 17
arrList.set(1, 17);
System.out.println(arrList);
}
}
输出:
[5、10、15、20]
[5, 10, 7, 15, 20]
15
[5, 17, 7, 15, 20]
我们尝试将 7
个元素添加到长度为 5
的数组的场景可以通过使用 ArrayLists
轻松解决。请记住,我们不能在 ArrayLists
中使用像 int
这样的原始数据类型,因此我们使用包装类 Integer
。
import java.util.ArrayList;
public class Main
{
public static void main(String[] args)
{
ArrayList<Integer> arrList = new ArrayList<Integer>();
for(int i = 0; i <= 6; i++)
{
arrList.add(i*2);
}
for(int i=0; i<arrList.size(); i++)
{
System.out.print(arrList.get(i) + " ");
}
}
}
输出:
0 2 4 6 8 10 12
在 Java 中增加数组大小
数组是一种基本但极其重要和有用的数据结构。数组的一个限制是它们的大小是固定的,并且它们的大小不能动态增加。
在本教程中,我们学习了如何增加数组的大小。我们可以创建一个更大的新数组,并将旧数组的内容复制到新数组中。最好和最简单的解决方案是使用 ArrayLists
,因为它们可以动态增加其大小。
我们希望本指南非常有帮助,并且你在 Java 中学到了一些新东西。
相关文章
在 Java 中创建子数组
发布时间:2023/09/17 浏览次数:87 分类:Java
-
数组可以是任何需要的长度。在声明一个数组时,我们为该数组分配内存。我们也可以在声明期间初始化数组。有时,我们可能只需要从数组中提取一些元素。在本文中,我们将从 Java 中的另一
在 Java 中创建数组的数组
发布时间:2023/09/17 浏览次数:100 分类:Java
-
在编程中,数组是一种线性数据结构,可以存储相同类型元素的固定大小顺序集合。我们也可以使用数组来存储其他数组。这样,我们创建了一个多维数组。子阵列还可以包含其他阵列。在本文
在 Java 函数中返回两个值
发布时间:2023/09/17 浏览次数:115 分类:Java
-
在 Java 中,没有将两个值返回给函数的特权。解决多值返回带来的问题,可以通过创建一个用户定义的类来存储输出,或者使用内置的数据类型如 Array,Pair(如果只有两个值需要返回),Hash
Java 中将数组传递给方法
发布时间:2023/09/17 浏览次数:114 分类:Java
-
本文介绍如何将数组传递给 Java 中的方法。我们还列出了一些示例代码以帮助你理解该主题。Java 是一种强大的面向对象的编程语言;它是一种通用编程语言,可用于各种目的。让我们学习 Ja
Java 中的数组范围
发布时间:2023/09/17 浏览次数:170 分类:Java
-
完成数组切片以从现有数组中获取一系列元素。这就像从给定数组中提取子数组。本文介绍了如何从现有数组中获取一系列元素。