数组线性表ArrayList

来源:互联网 发布:朝鲜核试验 知乎 编辑:程序博客网 时间:2024/05/16 17:54

Java提供ArrayList类来存储不限定个数的对象。下面是ArrayList中的一些方法。

ArrayList()

创建一个空的线性表

 

add(o: Object)

在这个线性表的末尾追加一个新元素o

 

add(index: int, o: Object)

在这个线性表中的特定下标处增加一个新元素o

 

clear()

从这个线性表中删除所有的元素

 

contains(o: Object)

如果这个线性表包含元素o则返回true

 

get(index: int)

返回这个线性表在特定下标处的元素

 

indexOf(o: Object)

返回这个线性表中第一个匹配元素的下标

 

isEmpty()

如果这个线性表不包含元素则返回true

 

lastIndexOf(o: Object)

返回这个线性表中最后一个匹配元素的下标

 

remove(o: Object)

从这个线性表中删除元素o

 

size()

返回这个线性表中元素的个数

 

remove(index: int)

删除指定下标处的元素

 

set(index: int, o: Object)

设置在特定下标处的元素

 

下面是使用ArrayList存储对象的一个例子

 

public class TextArrayList {   public static void main(String[] args) {      java.util.ArrayList cityList = new java.util.ArrayList();      cityList.add("London");      cityList.add("Denver");      cityList.add("Paris");      cityList.add("Miami");      cityList.add("Seoul");      cityList.add("Tokyo");      System.out.println("List size?" + cityList.size());      System.out.println("Is Miami in the list?" + cityList.contains("Miami"));      System.out.println("The location of Denver in the list?" + cityList.indexOf("Denver"));      System.out.println("Is the list empty?" + cityList.isEmpty());      cityList.add(2,"Xian");      cityList.remove("Miami");      cityList.remove(1);      System.out.println(cityList.toString());      for (int i = cityList.size() - 1; i >= 0; i--) {         System.out.print(cityList.get(i) + "");      }      System.out.println();      java.util.ArrayList list = new java.util.ArrayList();      list.add(new Circle4(2));      list.add(new Circle4(3));      System.out.println("The area of the circle?" + ((Circle4)list.get(0)).getArea());   }}

 输出

List size? 6
Is Miami in the list? true
The location of Denver in the list? 1
Is the list empty? false
[London, Xian, Paris, Seoul, Tokyo]
Tokyo Seoul Paris Xian London
The area of the circle? 12.566370614359172

 程序使用无参构造方法创建一个ArrayList(第3行),add方法将Object的任一实例加入线性表中。由于String是Object的一个子类,所以字符串可以加入到线性表中。add方法(第4~9行)将一个对象加入到线性表的末尾。所以,在执行完cityList.add("London")(第4行)之后,这个线性表包含[London]

执行完cityList.add("Denver")(第5行)后,这个线性表包含[London,Denver]

在加入Paris、Miami、Seoul和Tokyo之后(第6~9行),这个线性表包含[London,Denver,Paris,Miami,seoul,Tokyo]

调用size()(第10行)返回这个线性表的大小,线性表的当前大小为6.调用contains("Miami")(第11行)检测这个对象是否在这个线性表中。在这种情况下,它返回true,因为Miami在这个线性表中。调用indexOf("Denver")(第12行)返回该对象在线性表中的索引值,这里它的值为1。如果对象不在这个线性表中,它返回-1。isEmpty()方法(第13行)检测这个线性表是否为空。因为当前列表不为空,所以它返回false。

语句cityList.add(2,"Xian")(第14行)在这个线性表的指定下标位置插入一个对象。该语句执行完之后,线性表变成[London,Denver,Xina,Paris,Miami,Seoul,Tokyo]

语句cityList.remove("Miami")(第15行)从线性表中删除该对象。该语句执行后,线性表就变成[London,denver,Xian,Paris,Seoul,Tokyo]

语句cityList.remove(1)(第16行)从线性表中删除指定下标位置的对象,该语句执行后,线性表变成[London,Xian,Paris,Seoul,Tokyo]

第17行的语句相当于

System.out.println(cityList);

方法toString()返回表示线性表的字符串,其形式为[e0.toString(),e1.toString(),...,ek.toString()],这里的e0,e1,...,ek都是线性表中的元素。

方法get(index)(第19行)返回指定下标位置处的对象。

可以像使用数组一样使用ArrayList对象,但是两者还是有很多不同之处。下表列出了它们的异同点。

一旦创建了一个数组,它的大小就确定下来了。可以使用方括号访问数组元素(例如:a[index])。当创建ArrayList后,它的大小为0.如果元素不在线性表中,就不能使用get和set方法。向线性表中添加、插入和删除是比较容易的,而向数组中添加、插入和删除元素是比较复杂的。为了实现这些操作,必须编写代码操纵这个数组。

数组和ArrayList之间的异同创建数组、ArrayListObject[] a =new Object[10]ArrayList list = new.ArrayList()引用元素a[index]list.get(index)更新元素a[index] = "London";list.set(index, "London");返回大小a lengthlist.size()添加一个新元素list.add("London")插入一个新元素list.add(index,"London")删除一个指定下标的元素list.remove(index)删除一个特定内容的元素list.remove(Object)删除所有元素list.clear()

 

原创粉丝点击