对java.util的总结 二

对java.util的总结 二
qzg589 原创  (参与分:123781,专家分:6302)   发表:2005-08-08 18:23   版本:1.0   阅读:1637

小又会变小。
在前面的例子中,使用由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<ia.length; 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),接下来对这些值进行求
和。
15.3.2 LinkedList类
LinkedList类扩展AbstractSequentialList并执行List接口。它提供了一个链接列表数据结
构。它具有如下的两个构造函数,说明如下:
LinkedList( )
LinkedList(Collection c)
第一个构造函数建立一个空的链接列表。第二个构造函数建立一个链接列表,该链接
列表由类集c中的元素初始化。
除了它继承的方法之外,LinkedList类本身还定义了一些有用的方法,这些方法主要用
于操作和访问列表。使用addFirst( )方法可以在列表头增加元素;使用addLast( )方法可以在
列表的尾部增加元素。它们的形式如下所示:
void addFirst(Object obj)
void addLast(Object obj)
这里,obj是被增加的项。
调用getFirst( )方法可以获得第一个元素。调用getLast( )方法可以得到最后一个元素。
它们的形式如下所示:
Object getFirst( )
Object getLast( )
为了删除第一个元素,可以使用removeFirst( )方法;为了删除最后一个元素,可以调
用removeLast( )方法。它们的形式如下所示:
Object removeFirst( )
Object removeLast( )

下面的程序举例说明了几个LinkedList支持的方法。
// Demonstrate LinkedList.
import java.util.*;
class LinkedListDemo {
public static void main(String args[]) {
// create a linked list
LinkedList ll = new LinkedList();
// add elements to the linked list
ll.add("F");
ll.add("B");
ll.add("D");
ll.add("E");
ll.add("C");
ll.addLast("Z");
ll.addFirst("A");
ll.add(1, "A2");
System.out.println("Original contents of ll: " + ll);
// remove elements from the linked list
ll.remove("F");
ll.remove(2);
System.out.println("Contents of ll after deletion: "
+ ll);
// remove first and last elements
ll.removeFirst();
ll.removeLast();
System.out.println("ll after deleting first and last: "
+ ll);
// get and set a value
Object val = ll.get(2);
ll.set(2, (String) val + " Changed");
System.out.println("ll after change: " + ll);
}
}
该程序的输出如下所示:
Original contents of ll: [A, A2, F, B, D, E, C, Z]
Contents of ll after deletion: [A, A2, D, E, C, Z]
ll after deleting first and last: [A2, D, E, C]
ll after change: [A2, D, E Changed, C]
因为LinkedList实现List接口,调用add(Object)将项目追加到列表的尾部,如同addLast( )
方法所做的那样。使用add( )方法的add(int, Object)形式,插入项目到指定的位置,如例子

程序中调用add(1,“A2”)的举例。
注意如何通过调用get( )和set( )方法而使得ll中的第三个元素发生了改变。为了获得一
个元素的当前值,通过get( )方法传递存储该元素的下标值。为了对这个下标位置赋一个新
值,通过set( )方法传递下标和对应的新值。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值