在Java中的数据结构主要包括以下几种接口和类:
- 枚举(Enumeration)
- 位集合(BitSet)
- 向量(Vector)
- 栈(Stack)
- 字典(Dictionary)
- 哈希表(Hashtable)
- 属性(Properties)
枚举
枚举(The Enumeration)接口定义了一种从数据结构中取回连续元素的方式。
例如,枚举定义了一个叫nextElement 的方法,该方法用来得到一个包含多元素的数据结构的下一个元素。
public enum StatusEnum {
DEFAULT("初始状态",0),
AUDIT("待审核",1),
AUDITPASS("已通过",2),
REJECT("已驳回",3);
private String desc;
private Integer value;
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public Integer getValue() {
return value;
}
public void setValue(Integer value) {
this.value = value;
}
StatusEnum(String desc, Integer value) {
this.desc = desc;
this.value = value;
}
}
位集合
位集合类实现了一组可以单独设置和清除的位或标志。
使用位集合来解决涉及标志位的事情要比使用boolean类的对象效率高,而且有已经实现的类库方法可以调用。
import java.util.BitSet;
public class BitSetDemo {
public static void main(String args[]) {
BitSet bits1 = new BitSet(16);
BitSet bits2 = new BitSet(16);
// set some bits
for(int i=0; i<16; i++) {
if((i%2) == 0) bits1.set(i);
if((i%5) != 0) bits2.set(i);
}
// System.out.println("Initial pattern in bits1: ");
// System.out.println(bits1);
// System.out.println("\nInitial pattern in bits2: ");
// System.out.println(bits2);
// AND bits
// bits2.and(bits1);
// System.out.println("\nbits2 AND bits1: ");
// System.out.println(bits2);
// OR bits
// bits2.or(bits1);
// System.out.println("\nbits2 OR bits1: ");
// System.out.println(bits2);
// XOR bits
// bits2.xor(bits1);
//System.out.println("\nbits2 XOR bits1: ");
//System.out.println(bits2);
}
}
向量
Vector 类实现了一个动态数组。和 ArrayList 很相似,但是两者是不同的:
- Vector 是同步访问的。
- Vector 包含了许多传统的方法,这些方法不属于集合框架。
Vector v = new Vector(5, 2);// 容量是5,增量是2
System.out.println("Initial size: " + v.size());
System.out.println("Initial capacity: " + v.capacity());
v.addElement(new Integer(1));
v.addElement(new Integer(2));
v.addElement(new Integer(3));
v.addElement(new Integer(4));
v.addElement(new Integer(5));
v.addElement(new Integer(6));
System.out.println("Capacity after four additions: " + v.capacity());
栈
栈是Vector的一个子类
栈(Stack)实现了一个后进先出(LIFO)的数据结构。
字典
是一个抽象类,它定义了键映射到值的数据结构。
哈希表
Hashtable类提供了一种在用户定义键结构的基础上来组织数据的手段。
例如,在地址列表的哈希表中,你可以根据邮政编码作为键来存储和排序数据,而不是通过人名。
哈希表键的具体含义完全取决于哈希表的使用情景和它包含的数据。
属性
Properties 继承于 Hashtable.Properties 类表示了一个持久的属性集.属性列表中每个键及其对应值都是一个字符串。
Properties 类被许多Java类使用。例如,在获取环境变量时它就作为System.getProperties()方法的返回值。