一、枚举(Enumeration)
Enumeration接口中定义了一些方法,通过这些方法可以枚举(一次获得一个)对象集合中的元素。
这种传统接口已被迭代器取代,虽然Enumeration 还未被遗弃,但在现代代码中已经被很少使用了。
尽管如此,它还是使用在诸如Vector和Properties这些传统类所定义的方法中,除此之外,还用在一些API类,并且在应用程序中也广泛被使用。
下表总结了一些Enumeration声明的方法:
序号 | 方法描述 |
---|---|
1 | boolean hasMoreElements( ) 测试此枚举是否包含更多的元素。 |
2 | Object nextElement( ) 如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素。 |
以下实例演示了Enumeration的使用:
import java.util.Vector;
import java.util.Enumeration;
public class EnumerationTester {
public static void main(String args[]) {
Enumeration<String> days;
Vector<String> dayNames = new Vector<String>();
dayNames.add("1 - Sunday");
dayNames.add("2 - Monday");
dayNames.add("3 - Tuesday");
dayNames.add("4 - Wednesday");
dayNames.add("5 - Thursday");
dayNames.add("6 - Friday");
dayNames.add("7 - Saturday");
days = dayNames.elements();
while (days.hasMoreElements()){
System.out.println(days.nextElement());
}
}
}
以上实例编译运行结果如下:
1 - Sunday
2 - Monday
3 - Tuesday
4 - Wednesday
5 - Thursday
6 - Friday"
7 - Saturday
二、位集合(BitSet)
一个Bitset类创建一种特殊类型的数组来保存位值。BitSet中数组大小会随需要增加。这和位向量(vector of bits)比较类似。
这是一个传统的类,但它在Java 2中被完全重新设计。
BitSet定义了两个构造方法。
第一个构造方法创建一个默认的对象:
BitSet()
第二个方法允许用户指定初始大小。所有位初始化为0。
BitSet(int size)
BitSet中实现了Cloneable接口中定义的方法如下表所列:
序号 | 方法描述 |
---|---|
1 | void and(BitSet set) 对此目标位 set 和参数位 set 执行逻辑与操作。 |
2 | void and(BitSet set) 对此目标位 set 和参数位 set 执行逻辑与操作。 |
3 | void and(BitSet set) 对此目标位 set 和参数位 set 执行逻辑与操作。 |
4 | void and(BitSet set) 对此目标位 set 和参数位 set 执行逻辑与操作。 |
5 | void and(BitSet set) 对此目标位 set 和参数位 set 执行逻辑与操作。 |
6 | void and(BitSet set) 对此目标位 set 和参数位 set 执行逻辑与操作。 |
7 | int cardinality( ) 返回此 BitSet 中设置为 true 的位数。 |
8 | void clear( ) 将此 BitSet 中的所有位设置为 false。 |
9 | void clear(int index) 将索引指定处的位设置为 false。 |
10 | void clear(int startIndex, int endIndex) 将指定的 startIndex(包括)到指定的 toIndex(不包括)范围内的位设置为 false。 |
以上具体的还有很多,详见BitSet
考虑到用的时候不多,不具备研究意义
三、向量(Vector)
Vector 类实现了一个动态数组。和 ArrayList 很相似,但是两者是不同的:
- Vector 是同步访问的。
- Vector 包含了许多传统的方法,这些方法不属于集合框架。
Vector 主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。
Vector 类支持 4 种构造方法。
- 第一种构造方法创建一个默认的向量,默认大小为 10:
Vector()
- 第二种构造方法创建指定大小的向量。
Vector(int size)
- 第三种构造方法创建指定大小的向量,并且增量用 incr 指定。增量表示向量每次增加的元素数目。
Vector(int size,int incr)
- 第四种构造方法创建一个包含集合 c 元素的向量:
Vector(Collection c)
除了从父类继承的方法外 Vector 还定义了以下方法:
序号 | 方法描述 |
---|---|
1 | void add(int index, Object element) 在此向量的指定位置插入指定的元素。 |
2 | boolean add(Object o) 将指定元素添加到此向量的末尾。 |
3 | boolean addAll(Collection c) 将指定 Collection 中的所有元素添加到此向量的末尾,按照指定 collection 的迭代器所返回的顺序添加这些元素。 |
4 | boolean addAll(int index, Collection c) 在指定位置将指定 Collection 中的所有元素插入到此向量中。 |
5 | void addElement(Object obj) 将指定的组件添加到此向量的末尾,将其大小增加 1。 |
6 | int capacity() 返回此向量的当前容量。 |
7 | void clear() 从此向量中移除所有元素。 |
8 | Object clone() 返回向量的一个副本。 |
9 | boolean contains(Object elem) 如果此向量包含指定的元素,则返回 true。 |
10 | boolean containsAll(Collection c) 如果此向量包含指定 Collection 中的所有元素,则返回 true。 |
四、字典(Dictionary)
Dictionary 类是一个抽象类,用来存储键/值对,作用和Map类相似。
和Map一样给出键和值,可以将值存储在Dictionary对象中。一旦该值被存储,就可以通过它的键来获取它。
即Dictionary 也可以作为一个键/值对列表。
Dictionary定义的抽象方法如下表所示:
序号 | 方法描述 |
---|---|
1 | Enumeration elements( ) 返回此 dictionary 中值的枚举。 |
2 | Object get(Object key) 返回此 dictionary 中该键所映射到的值。 |
3 | boolean isEmpty( ) 测试此 dictionary 是否不存在从键到值的映射。 |
4 | Enumeration keys( ) 返回此 dictionary 中的键的枚举。 |
5 | Object put(Object key, Object value) 将指定 key 映射到此 dictionary 中指定 value。 |
6 | Object remove(Object key) 从此 dictionary 中移除 key (及其相应的 value)。 |
7 | int size( ) 返回此 dictionary 中条目(不同键)的数量。 |
根据网上获取到的信息,大多数人觉得Dictionary类已经过时,实际开发建议使用Map。
五、属性(Properties)
Properties 继承于 Hashtable。表示一个持久的属性集.属性列表中每个键及其对应值都是一个字符串。
Properties 类被许多 Java 类使用。例如,在获取环境变量时它就作为 System.getProperties() 方法的返回值。
Properties 定义如下实例变量.这个变量持有一个 Properties 对象相关的默认属性列表。
Properties defaults;
Properties类定义了两个构造方法. 第一个构造方法没有默认值。
Properties()
第二个构造方法使用propDefault 作为默认值。两种情况下,属性列表都为空:
Properties(Properties propDefault)
序号 | 方法描述 |
---|---|
1 | String getProperty(String key) 用指定的键在此属性列表中搜索属性。 |
2 | String getProperty(String key, String defaultProperty) 用指定的键在属性列表中搜索属性。 |
3 | void list(PrintStream streamOut) 将属性列表输出到指定的输出流。 |
4 | void list(PrintWriter streamOut) 将属性列表输出到指定的输出流。 |
5 | void load(InputStream streamIn) throws IOException 从输入流中读取属性列表(键和元素对)。 |
6 | Enumeration propertyNames( ) 按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。 |
7 | Object setProperty(String key, String value) 调用 Hashtable 的方法 put。 |
8 | void store(OutputStream streamOut, String description) 以适合使用 load(InputStream)方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。 |
import java.util.*;
public class PropDemo {
public static void main(String args[]) {
Properties capitals = new Properties();
Set states;
String str;
capitals.put("Illinois", "Springfield");
capitals.put("Missouri", "Jefferson City");
capitals.put("Washington", "Olympia");
capitals.put("California", "Sacramento");
capitals.put("Indiana", "Indianapolis");
// Show all states and capitals in hashtable.
states = capitals.keySet(); // get set-view of keys
Iterator itr = states.iterator();
while(itr.hasNext()) {
str = (String) itr.next();
System.out.println("The capital of " +
str + " is " + capitals.getProperty(str) + ".");
}
System.out.println();
// look for state not in list -- specify default
str = capitals.getProperty("Florida", "Not Found");
System.out.println("The capital of Florida is "
+ str + ".");
}
}
以上实例编译运行结果如下:
The capital of Missouri is Jefferson City.
The capital of Illinois is Springfield.
The capital of Indiana is Indianapolis.
The capital of California is Sacramento.
The capital of Washington is Olympia.
The capital of Florida is Not Found.
这可能并不是一个大家写代码时常用的,但是考虑到重要性,还是写的详细了一些