Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类:

  • 枚举(Enumeration)
  • 位集合(BitSet)
  • 向量(Vector)
  • 栈(Stack)
  • 字典(Dictionary)
  • 哈希表(Hashtable)
  • 属性(Properties)
  • 集合框架(Collection)

枚举(Enumeration)

枚举(Enumeration)接口虽然它本身不属于数据结构,但它在其他数据结构的范畴里应用很广。
枚举(The Enumeration)接口定义了一种从数据结构中取回连续元素的方式。
Enumeration接口中定义了一些方法,通过这些方法可以枚举(一次获得一个)对象集合中的元素。
这种传统接口已被迭代器取代,虽然Enumeration 还未被遗弃,但在现代代码中已经被很少使用了。尽管如此,它还是使用在诸如Vector和Properties这些传统类所定义的方法中,除此之外,还用在一些API类,并且在应用程序中也广泛被使用。 下表总结了一些Enumeration声明的方法请参见枚举(Enumeration)

序号 方法描述
boolean hasMoreElements( ) 测试此枚举是否包含更多的元素
Object nextElement( ) 如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素
  1. import java.util.Vector;
  2. import java.util.Enumeration;
  3. public class EnumerationTester {
  4. public static void main(String args[]) {
  5. Enumeration<String> days;
  6. Vector<String> dayNames = new Vector<String>();
  7. dayNames.add("Sunday");
  8. dayNames.add("Monday");
  9. dayNames.add("Tuesday");
  10. dayNames.add("Wednesday");
  11. dayNames.add("Thursday");
  12. dayNames.add("Friday");
  13. dayNames.add("Saturday");
  14. days = dayNames.elements();
  15. while (days.hasMoreElements()){
  16. System.out.println(days.nextElement());
  17. }
  18. }
  19. }
  20. /*
  21. Sunday
  22. Monday
  23. Tuesday
  24. Wednesday
  25. Thursday
  26. Friday
  27. Saturday
  28. */

位集合(BitSet)

位集合类实现了一组可以单独设置和清除的位或标志。
该类在处理一组布尔值的时候非常有用,你只需要给每个值赋值一”位”,然后对位进行适当的设置或清除,就可以对布尔值进行操作了。
关于该类的更多信息,请参见位集合(BitSet)

向量(Vector)

向量(Vector)类和传统数组非常相似,但是Vector的大小能根据需要动态的变化。
和数组一样,Vector对象的元素也能通过索引访问。
使用Vector类最主要的好处就是在创建对象的时候不必给对象指定大小,它的大小会根据需要动态的变化。
关于该类的更多信息,请参见向量(Vector)

字典(Dictionary)

字典(Dictionary) 类是一个抽象类,它定义了键映射到值的数据结构。
当你想要通过特定的键而不是整数索引来访问数据的时候,这时候应该使用Dictionary。
由于Dictionary类是抽象类,所以它只提供了键映射到值的数据结构,而没有提供特定的实现。
关于该类的更多信息,请参见字典( Dictionary)

哈希表(Hashtable)

Hashtable类提供了一种在用户定义键结构的基础上来组织数据的手段。
例如,在地址列表的哈希表中,你可以根据邮政编码作为键来存储和排序数据,而不是通过人名。
哈希表键的具体含义完全取决于哈希表的使用情景和它包含的数据。
关于该类的更多信息,请参见哈希表(HashTable)

属性(Properties)

Properties 继承于 Hashtable.Properties 类表示了一个持久的属性集.属性列表中每个键及其对应值都是一个字符串。
Properties 类被许多Java类使用。例如,在获取环境变量时它就作为System.getProperties()方法的返回值。
关于该类的更多信息,请参见属性(Properties)

栈(Stack)

栈(Stack)又称堆栈,实现了一个后进先出(LIFO)的数据结构。它是运算受限的线性表,其限制是仅允许在标的一端进行插入和删除操作,不允许在其 他任何位置进行添加、查找、删除等操作
你可以把栈理解为对象的垂直分布的栈,当你添加一个新元素时,就将新元素放在其他元素的顶部。
当你从栈中取元素的时候,就从栈顶取一个元素。换句话说,最后进栈的元素最先被取出。
或者你可以把栈理解为弹夹压子弹与取子弹,先压进的子弹在下面,后压进去的子弹在上面,开枪时候,先弹出从上面到下面依次弹出子弹
关于该类的更多信息,请参见栈(Stack)
image.png

队列 (Queue)

队列(Queue) 是一个先进先出(FIFO)的模式
它同堆栈一样,也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入, 而在表的另一端进行删除
image.png

集合框架(Collection)

红黑树

image.png