在Java中,数组用于同时存储多个项目,易于存储
使用结构。 当您要存储多条数据并拥有数据时
类型相互关联(例如,您可以使用的员工姓名,地址,工作时间
使用一组并行数组或创建一个Employee类并使用一个数组
容纳物体。
使用数组的问题是必须在以下情况下设置数组的大小
它被创建。 例如:
Employee[] emparray = new Employee[10];
这将创建一个只能容纳10个员工对象的数组。
如果您尝试
在此数组中存储10个以上的元素时,Java会引发错误异常。
最初必须设置此类数组的大小非常有限,因为您可能会
不知道您最多(或完全)有10名员工。
解决此问题的一种方法是使用一些内置的数据结构
Java中找到的类。 这种数据结构的主要目的是使
您可以在其中存储不受Employee约束的东西
大小,这很容易从数据结构中检索数据。
Java提供了一种称为ArrayList的数据结构。 这就像一个
链表和数组的组合,您可以存储任意数量的内容
在这种结构中,它将相应地增长。 您还可以访问以下元素
通过使用索引值来实现这种结构,就像使用Array一样。
使用ArrayLists有一些限制是它们只能处理Class
对象,并且无法轻松处理基本数据类型,例如整数和双精度型。
如果要将此类信息存储在ArrayList中,则必须首先
将其转换为对象数据类型。
Java 1.4及更低版本希望您将int封装为Integers,将double转换为Doubles
等 这是Java 1.4片段的样子:
List array= new ArrayList();
for (int i= 0; i < 10; i++) {
array.add(new Integer(i));
int j= ((Integer)array.get(i)).intValue(); // get value back
...这就是Java 1.5或更高版本中的相同资源:
List<Integer> array= new ArrayList<Integer>();
for (int i= 0; i < 10; i++) {
arrray.add(i);
int j= array.get(i); // get value back
ArrayList的第二个限制是要使用搜索功能,您必须
在类中添加一些特殊方法。 这些方法是equals(),
hashCode()和compareTo()方法。 稍后将对此进行解释。
创建ArrayList是通过导入java.util。*完成的。 包装或只是
单个类本身:导入java.util.ArrayList类,然后创建一个
ArrayList类的实例:
import java.util.*;
...
List<PersonClass> arlist = new ArrayList<PersonClass>();
基本上,创建ArrayList对象(在本例中为arlist)时的操作
是使用将用于创建对象的类的名称
将存储在列表中。 此类名称位于一对<>之间
(<Employee>)符号并放置在ArrayList类名称之后
在创建arraylist对象时使用。 在这种情况下,
用于创建要存储在此arraylist中的对象的是Employee类。
使用数组列表创建ArrayList后,您可以创建将添加的对象,并
然后将它们添加到列表中。 这是通过add()命令完成的:
PersonClass temp = new PersonClass ("NW123");
arlist.add(temp);
此命令将对象temp添加到列表的末尾。
如果要添加
使用以下命令将其定位到列表中的特定索引位置:
PersonClass temp = new PersonClass ("NW123");
arlist.add(3, temp);
这会将所有元素“向下”移动,并将此新对象置于位置3。
如果要用新对象替换位置3的元素,
创建后,您将使用:
PersonClass temp = new PersonClass ("E123");
arlist.set(3, temp);
如果要删除元素5,则可以使用:
arlist.remove(5);
要使对象位于位置5,可以使用:
Employee x;
x = arlist.get(5);
获取ArrayList对象的大小及其当前有多少个元素
持有),您将使用:
int empsize = arlist.size();
如果要查看尺寸,请使用:
System.out.println("The size is "+empsize () );
要遍历列表并访问每个元素,可以使用for()循环:
for(PersonClass e : arlist ) {
System.out.println("The name is "+e.getLname() );
}
for()循环将以相同顺序遍历arraylist中的所有元素
就像Iterator一样。 迭代器从第一个开始对List进行迭代
元素,最后一个元素结束; 因此obove循环会访问其中的每个元素
与以下循环相同的顺序:
for( int i=0; i<arlist.size(); i++) {
PersonClass e = arlist.get( i );
System.out.println("The info is "+e.getEmpID(), +e.getLname() );
}
这里,ArrayList上的size()方法用于标记循环的结束。
i变量用作ArrayList索引,并与get()方法一起使用
返回对象。 PersonClass对象e仅用于保存
引用列表中的对象。
这样就完成了对ArrayList类的简短介绍。 还有另一个
列表实现:行为类似于ArrayList的LinkedList。
两种类型的列表都有其优缺点:ArrayList非常快
当您要访问给定索引值的元素时。 一个LinkedList非常
删除或插入列表中任何位置的元素时速度很快。
给定算法的特征,请选择正确的列表类型。
请注意,您的算法本身应将特定列表称为对象
类型为“列表”,即只是接口类型。 这使得选择非常容易
需要时的另一种列表; 只是列表的构造部分
了解将实际构造哪种类型的列表。
Collections框架中有更多可用的数据结构。 他们是
其他文章的主题。
From: https://bytes.com/topic/java/insights/656892-author-nomad-arraylists