Java中的标准数组的元素数量是固定的。如果要增加或减少数组中的元素,则必须从原始数组的内容中创建一个元素数正确的新数组。另一种方法是使用ArrayList类。ArrayList类提供了创建动态数组的方法(即,它们的长度可以增加或减少)。
可以使用简单构造函数创建ArrayList:
ArrayList dynamicArray = new ArrayList();这将创建一个初始容量为10个元素的ArrayList。如果需要较大(或较小)的ArrayList,则可以将初始容量传递给构造函数。为20个元素留出空间:
ArrayList dynamicArray = new ArrayList(20);使用add方法将值附加到ArrayList:
dynamicArray.add(10); dynamicArray.add(12); dynamicArray.add(20);注意:ArrayList仅存储对象,因此,尽管上面的几行似乎向ArrayList添加了int值,但在将int值附加到ArrayList时,它们会自动更改为整数对象。
通过使用Arrays.asList方法将标准数组转换为列表集合,并使用addAll方法将其添加到ArrayList,可以使用标准数组填充ArrayList:
String[] names = {"Bob", "George", "Henry", "Declan", "Peter", "Steven"}; ArrayList dynamicStringArray = new ArrayList(20); dynamicStringArray.addAll(Arrays.asList(names));关于ArrayList需要注意的一点是,元素不必是相同的对象类型。即使dynamicStringArray已由字符串对象填充,它仍然可以接受数值:
dynamicStringArray.add(456);为了最大限度地减少出错的可能性,最好指定希望ArrayList包含的对象类型。这可以通过使用泛型在创建阶段完成:
ArrayList dynamicStringArray = new ArrayList(20);现在,如果我们试图添加一个不是字符串的对象,就会产生编译时错误。
要在ArrayList中显示项目,可以使用toString方法:
System.out.println("Contents of the dynamicStringArray: " + dynamicStringArray.toString());其结果是:
Contents of the dynamicStringArray: [Bob, George, Henry, Declan, Peter, Steven]通过使用add方法并传递插入位置,可以将对象插入元素的ArrayList索引的任何位置。要将字符串“Max”添加到位置3处的dynamicStringArray,请执行以下操作:
dynamicStringArray.add(3, "Max");这将导致(不要忘记ArrayList的索引从0开始):
[Bob, George, Henry, Max, Declan, Peter, Steven]remove方法可用于从ArrayList中删除元素。这可以通过两种方式实现。第一个是提供要删除的元素的索引位置:
dynamicStringArray.remove(2);位置2中的字符串“Henry”已被删除:
[Bob, George, Max, Declan, Peter, Steven]第二个是提供要移除的对象。这将删除对象的第一个实例。要从dynamicStringArray中删除“Max”,请执行以下操作:
dynamicStringArray.remove("Max");字符串“Max”不再在ArrayList中:
[Bob, George, Declan, Peter, Steven]可以使用set方法一次性替换元素,而不是删除元素并在其位置插入新元素。只需传递要替换的元素和要替换的对象的索引。将“彼得”替换为“保罗”:
dynamicStringArray.set(3,"Paul");其结果是:
[Bob, George, Declan, Paul, Steven]有许多有用的方法可以帮助导航arraylist的内容:
...象自动转换为其相应的原语类型的过程称为取消装箱。像ArrayLists这样的集合使用包装类,因为它们存储对象。 什么是java中的基元类型(primitive type in java)? 原始数据类型是Java编程语言提供的预定义数据类型。有八种基本类型。...
...元素2,那么元素1将位于元素2之前。 图01:列表和设置 ArrayList,LinkedList,Vector是一些实现List的类。在ArrayList中,访问元素的速度很快,但**和删除速度较低。ArrayList不是线程安全的。从多个线程访问同一个ArrayList可能不会得到...
关键区别–arraylist与linkedlist 集合对于存储数据很有用。在普通数组中,数组大小是固定的。有时需要创建可以根据需要增长的阵列。Java等编程语言有集合。它是一个包含一组类和接口的框架。它充当一组元素的容器。集合...
... public class Hello { public static void main(String[] args) { ArrayList list = new ArrayList(); }} ...
... 实现这个接口的类必须实现所有这些方法。ArrayList类使用阵列支持的存储系统实现此接口。可宣布如下: ...
...main" java.lang.IndexOutOfBoundsException: Index: 8, Size: 5 at java.util.ArrayList.rangeCheck(ArrayList.java:653) at java.util.ArrayList.get(ArrayList.java:429) at sample.sample1.main(sample1.java:24) ...
JavaArrayList是一个通用的可调整大小的数组。它提供了其他语言中数组通常需要的大部分功能。这些操作包括:使用索引访问元素、添加、删除和更新元素、动态重新调整大小、对元素进行迭代等。这些操作中的大多数都经过了...
ArrayList与Vector 向量实现的数组可以在运行时在添加或删除某些元素时进行增长/收缩。使用整数索引访问其元素。两个字段–容量和容量增量,是矢量存储管理的特征。它实现了四个接口:*列表*随机访问*可克隆*可串行化接口 ...
...是他们,有什么区别(they, and what’s the difference)? List和ArrayList是Java和C语言中的一些代码,允许您设置和调用参数。在坚果壳里。困惑的?我也是。下一段时间你需要一些知识。 通常,List是一个用于ArrayList或LinkedList的接口。列...
...的Java时代就已经出现了。就像Vector是更现代、更高级的ArrayList的同步对应物一样,Hashtable也是HashMap的同步对应物。但是,类不能同步,所以当我们说Hashtable是一个同步映射时,意味着类的关键方法是同步的。 虽然两者实际上是...