在 Java 1.0/1.1 中,Vector 是唯一可以自动扩展的序列,所以它被大量使用。它的缺点
多到这里都难以描述(可以参见本书的第一版,可从 www.BruceEckel.com 免费下载)。
基本上,可将其看作 ArrayList,但是具有又长又难记的方法名。在 Java 2 的容器类类库
中,Vector 被改造过,可将其规类为 Collection 和 List,所以下面的例子可以使用
Collection2.fill()方法。这样做有点不妥当,可能会让人误会 Vector 变得好用了,实际上
这样做只是为了支持 Java 2 之前的代码。
Java 1.0/1.1 版的迭代器,发明了一个新名字,“enumeration”,取代了为人熟知的
术语。此 Enumeration 接口比 Iterator 小,只有两个名字很长的方法:boolean
hasMoreElements( ) ,如果此 enumeration 包含有元素则返回 true;Object
nextElement( )返回此 enumeration 中的下一个元素,如果还有的话(否则抛出异常)。
Enumeration 只是接口而不是实现,所以有时新的类库仍然使用了旧的 Enumeration,
这令人十分遗憾,但通常不会造成伤害。虽然在你的代码中,应该尽量使用 Iterator,但
也得有所准备,类库可能会返回给你一个 Enumeration。
此外,你还可以通过使用 Collections.enumeration( )方法来从 Collection 生成一个
Enumeration,见下面的例子:
//: c11:Enumerations.java
// Java 1.0/1.1 Vector and Enumeration.
import java.util.*;
import com.bruceeckel.util.*;
public class Enumerations {
public static void main(String[] args) {
Vector v = new Vector();
Collections2.fill(v, Collections2.countries, 100);
Enumeration e = v.elements();
while(e.hasMoreElements())
System.out.println(e.nextElement());
// Produce an Enumeration from a Collection:
e = Collections.enumeration(new ArrayList());
}
} ///:~
Java 1.0/1.1 的 Vector 只有 addElement( )一个方法,fill( )中用到的 add( )方法,是
Vector 转换成 List 时新增加的。可以使用 elements( )生成 Enumeration,然后使用它
进行前序遍历。
最后一行代码创建了一个 ArrayList,并且使用 enumeration( )将 ArrayList 的 Iterator
转换成了 Enumeration。这样,即使有需要 Enumeration 的旧代码,你仍然可以使用新
多到这里都难以描述(可以参见本书的第一版,可从 www.BruceEckel.com 免费下载)。
基本上,可将其看作 ArrayList,但是具有又长又难记的方法名。在 Java 2 的容器类类库
中,Vector 被改造过,可将其规类为 Collection 和 List,所以下面的例子可以使用
Collection2.fill()方法。这样做有点不妥当,可能会让人误会 Vector 变得好用了,实际上
这样做只是为了支持 Java 2 之前的代码。
Java 1.0/1.1 版的迭代器,发明了一个新名字,“enumeration”,取代了为人熟知的
术语。此 Enumeration 接口比 Iterator 小,只有两个名字很长的方法:boolean
hasMoreElements( ) ,如果此 enumeration 包含有元素则返回 true;Object
nextElement( )返回此 enumeration 中的下一个元素,如果还有的话(否则抛出异常)。
Enumeration 只是接口而不是实现,所以有时新的类库仍然使用了旧的 Enumeration,
这令人十分遗憾,但通常不会造成伤害。虽然在你的代码中,应该尽量使用 Iterator,但
也得有所准备,类库可能会返回给你一个 Enumeration。
此外,你还可以通过使用 Collections.enumeration( )方法来从 Collection 生成一个
Enumeration,见下面的例子:
//: c11:Enumerations.java
// Java 1.0/1.1 Vector and Enumeration.
import java.util.*;
import com.bruceeckel.util.*;
public class Enumerations {
public static void main(String[] args) {
Vector v = new Vector();
Collections2.fill(v, Collections2.countries, 100);
Enumeration e = v.elements();
while(e.hasMoreElements())
System.out.println(e.nextElement());
// Produce an Enumeration from a Collection:
e = Collections.enumeration(new ArrayList());
}
} ///:~
Java 1.0/1.1 的 Vector 只有 addElement( )一个方法,fill( )中用到的 add( )方法,是
Vector 转换成 List 时新增加的。可以使用 elements( )生成 Enumeration,然后使用它
进行前序遍历。
最后一行代码创建了一个 ArrayList,并且使用 enumeration( )将 ArrayList 的 Iterator
转换成了 Enumeration。这样,即使有需要 Enumeration 的旧代码,你仍然可以使用新
容器。