Java数据结构
Java工具包提供了强大的数据结构,在Java的数据结构中主要包括一下几种接口和类:
- 枚举(Enumeration)
- 位集合(BitSet)
- 向量(Vector)
- 栈(Stack)
- 字典(Dictionary)
- 哈希表(Hashtable)
- 属性(Properties)
以上这些类是传统遗留的,在Java2中引入了一种新的框架-集合框架(Collection)。
枚举
枚举接口虽然本身不属于数据结构,但它在其他数据结构的范畴里应用很广。枚举接口定义了一种从数据结构中取回连续元素的方式。
枚举接口中定义了一些方法,通过这些方法可以枚举(一次获得一个)对象结合中的元素。
这种传统接口已经被迭代器取代,虽然枚举还没被遗弃,但在现代代码中已经很少用了,但是尽管如此其还是在使用像vector和Properties这些传统类所定义的方法中,除此之外,还用在一些API的类中。
实例如下:
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("Sunday");
dayNames.add("Monday");
dayNames.add("Tuesday");
dayNames.add("Wednesday");
dayNames.add("Thursday");
dayNames.add("Friday");
dayNames.add("Saturday");
days = dayNames.elements();
while (days.hasMoreElements()){
System.out.println(days.nextElement());
}
}
}
输出如下:
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
位集合
位集合类实现了一组可以单独设置和清除的位或标志。
该类在处理一组布尔值的时候有用,只需要给每个值赋值一“位”,然后对位进行适当的设置或清除,就可以对布尔值进行操作了。
JavaBitset类
一个Bitest类创建一个特殊类型的数组来保存位置,Bitest中数组大小会随着需要增加,这和位向量类似。
Bitest定义了两个构造方法。
第一种构造方法创建一个默认的对象:
Bitest()
第二种方法允许指定初始化大小。所有位初始化 为0.
Bitest(int size)
向量
向量类和传统数组非常像似,但是向量的大小能根据需要动态变化。
和数组一样向量对象的元素也能通过索引访问。
好处在于创建对象时不必给对象指定大小,它的大小会根据需要动态的变化。
栈
实现了一个后进先出的数据结构。
把栈理解为对象的垂直分布线,当添加一个新元素时,将新元素放在其他元素的顶部。
字典
字典类是一种抽象类,定义了键映射到值的数据结构。
当想通过特定的键而不是指定的值来访问数据的时候,这时候应该使用字典。
由于其实抽象类,所以类中的方法没有提供特定的实现。
哈希表
Hashtable类提供了一种在用户定义键结构的基础之上组织数据的手段。
哈希表键的具体含义完全取决于哈希表的使用情景和它包含的数据。
属性
Properties继承于Hashtable.Properties类表示了一个持久的属性集 属性列表中每个键及其对应值都是一个字符串。
Properties类被许多Java类使用。