冰雪

java.util 第1部分:类集框架 (6)

2019-09-13 20:44:42来源:励志吧0次阅读

下面的程序展示了ArrayList的一个简单应用。首先创建一个数组列表,接着添加类型String的对象(回想一个引用字符串被转化成一个字符串(String)对象)。接着列表被显示出来。将其中的一些元素删除后,再一次显示列表。

// Demonstrate ArrayList.

import java.util.*;

class ArrayListDemo {

public static void main(String args[]) {

// create an array list

ArrayList al = new ArrayList();

System.out.println("Initial size of al: " +

al.size());

// add elements to the array list

al.add("C");

al.add("A");

al.add("E");

al.add("B");

al.add("D");

al.add("F");

al.add(1, "A2");

System.out.println("Size of al after additions: " +

al.size());

// display the array list

System.out.println("Contents of al: " + al);

// Remove elements from the array list

al.remove("F");

al.remove(2);

System.out.println("Size of al after deletions: " +

al.size());

System.out.println("Contents of al: " + al);

}

}

该程序的输出如下所示:

Initial size of al: 0

Size of al after additions: 7

Contents of al: [C, A2, A, E, B, D, F]

Size of al after deletions: 5

Contents of al: [C, A2, E, B, D]

注意a1开始时是空的,当添加元素后,它的大小增加了。当有元素被删除后,它的大小又会变小。

在前面的例子中,使用由toString( )方法提供的默认的转换显示类集的内容,toString( )方法是从AbstractCollection继承下来的。尽管它对简短的例子程序来说是足够了,然而很少使用这种方法去显示实际中的类集的内容。通常编程者会提供自己的输出程序。但在下面的几个例子中,仍将采用由toString( )方法创建的默认输出。尽管当对象被存储在ArrayList对象中时,其容量会自动增加。仍可以通过调用ensureCapacity( )方法来人工地增加ArrayList的容量。如果事先知道将在当前能够容纳的类集中存储许许多多的项时,你可能会想这样做。在开始时,通过一次性地增加它的容量,就能避免后面的再分配。因为再分配是很花时间的,避免不必要的处理可以改善性能。

ensureCapacity( )方法的特征如下所示:

void ensureCapacity(int cap)

这里,cap是新的容量。相反地,如果想要减小在ArrayList对象之下的数组的大小,以便它有正好容纳当前项的大小,可以调用trimToSize( )方法。该方法说明如下:

void trimToSize( )

从数组列表(ArrayList)获得数组(Array)

当使用ArrayList时,有时想要获得一个实际的数组,这个数组包含了列表的内容。正如前面解释的那样,可以通过调用方法toArray( )来实现它。下面是几个为什么可能想将类集转换成为数组的原因:

· 对于特定的操作,可以获得更快的处理时间。

· 为了给方法传递数组,而方法不必重载去接收类集。

· 为了将新的基于类集的程序与不认识类集的老程序集成。

无论何种原因,如下面的例子程序所示,将ArrayList转换成数组是一件繁琐的事情。

// Convert an ArrayList into an array.

import java.util.*;

class ArrayListToArray {

public static void main(String args[]) {

// Create an array list

ArrayList al = new ArrayList();

// Add elements to the array list

al.add(new Integer(1));

al.add(new Integer(2));

al.add(new Integer(3));

al.add(new Integer(4));

System.out.println("Contents of al: " + al);

// get array

Object ia[] = al.toArray();

int sum = 0;

// sum the array

for(int i=0; i sum += ((Integer) ia[i]).intValue();

System.out.println("Sum is: " + sum);

}

}

该程序的输出如下所示:

Contents of al: [1, 2, 3, 4]

Sum is: 10

程序开始时创建一个整数的类集。正如上面做出的解释那样,由于不能将原始类型存储在类集中,因此类型Integer的对象被创建并被保存。接下来,toArray( )方法被调用,它获得了一个Objects数组。这个数组的内容被置为整型(Integer),接下来对这些值进行求和。

查看本文来源

宝宝干咳嗽是什么原因
小孩子脾胃虚弱吃什么药
婴儿咳嗽流鼻涕怎么办
儿童退烧药哪个效果好
分享到: