Java数据结构

来源:互联网 发布:法甲德佩数据 编辑:程序博客网 时间:2024/06/15 13:30

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

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

以上这些类是传统遗留的,在Java2中引入了一种新的框架-集合框架(Collection)

一.向量(Vector)

Vector类实现了一个动态数组。

java.util 中的集合类包含 Java 中某些最常用的类。最常用的集合类是 List 和 MapList 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。

Vector和ArrayList和相似,但是两者是不同的:

  • Vector是同步访问的。
  • Vector包含了许多传统的方法,这些方法不属于集合框架。

Vector主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。

Vector类支持4种构造方法,如下:

Vector();     //<span style="color: rgb(51, 51, 51); font-family: 'Microsoft Yahei', 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 24px;">创建一个默认的向量,默认大小为10;</span>Vector(int size);Vector(int size,int incr);  //创建指定大小的向量,并且增量用incr指定. 增量表示向量每次增加的元素数目;Vector(Collection c);     //<span style="color: rgb(51, 51, 51); font-family: 'Microsoft Yahei', 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 24px;">创建一个包含集合c元素的向量;</span>


二.栈(Stack)

栈是Vector的一个子类,它实现了一个标准的后进先出的栈。

堆栈只定义了默认构造函数【Stack()】,用来创建一个空栈。 堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法,如下:

Object peek( );    //查看堆栈顶部的对象,但不从堆栈中移除它;Object pop( );      //移除堆栈顶部的对象,并作为此函数的值返回该对象;Object push(Object element);   //压入栈顶;


三.字典(Dictionary)

Dictionary 类是一个抽象类,用来存储键/值对,作用和Map类相似。

给出键和值,你就可以将值存储在Dictionary对象中。一旦该值被存储,就可以通过它的键来获取它。所以和Map一样, Dictionary 也可以作为一个键/值对列表。Dictionary类已经过时了。在实际开发中,你可以实现Map接口来获取键/值的存储功能


四.Map 接口

Map接口中键和值一一映射. 可以通过键来获取值。从概念上而言,您可以将 List 看作是具有数值键的 Map。

  • 给定一个键和一个值,你可以将该值存储在一个Map对象. 之后,你可以通过键来访问对应的值。
  • 当访问的值不存在的时候,方法就会抛出一个NoSuchElementException异常.
  • 当对象的类型和Map里元素类型不兼容的时候,就会抛出一个 ClassCastException异常。
  • 当在不允许使用Null对象的Map中使用Null对象,会抛出一个NullPointerException 异常。
  • 当尝试修改一个只读的Map时,会抛出一个UnsupportedOperationException异常。

五.核心 Map

Java 自带了各种 Map 类。 这些 Map 类可归为三种类型:

1.通用 Map,用于在应用程序中管理映射,通常在 java.util 程序包中实现
  • HashMap
  • Hashtable
  • Properties
  • LinkedHashMap
  • IdentityHashMap
  • TreeMap
  • WeakHashMap
  • ConcurrentHashMap
2.专用 Map,您通常不必亲自创建此类 Map,而是通过某些其他类对其进行访问
  • java.util.jar.Attributes
  • javax.print.attribute.standard.PrinterStateReasons
  • java.security.Provider
  • java.awt.RenderingHints
  • javax.swing.UIDefaults
3.一个用于帮助实现您自己的 Map 类的抽象类
  • AbstractMap

六.Hashtable

Hashtable是原始的java.util的一部分, 是一个Dictionary具体的实现 。属于上面提到的核心Map中的通用Map。

然而,Java 2 重构的Hashtable实现了Map接口,因此,Hashtable现在集成到了集合框架中。它和HashMap类很相似,但是它支持同步



七.




1 0