Java数据结构

Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类:
枚举 Enumeration
位集合 BitSet
向量 Vector
栈 Stack
字典 Dictionary
哈希表 Hashtable
属性 Properties

枚举(Enumeration)

枚举接口虽然本身不属于数据结构,但是它在其他数据结构的范畴里应用很多。枚举接口定义了一种从数据结构中取回连续元素的方式。
常用另种方法:
boolean hasMoreElements()
Object nextElement()
实例:

  import java.util.*;
  public class Main {
  public static void main(String[] args) {
      Enumeration days;
      Vector dayNames = new Vector();
      dayNames.add("Sunday");
      dayNames.add("Monday");
      dayNames.add("Tuesday");
      days = dayNames.elements();
      while(days.hasMoreElements()){
          System.out.println(days.nextElement());
      }
    }
  }

位集合

位集合实现了一组可以单独设置和清除的位或标志。
该类在处理一组布尔值的时候非常有用,你只需要给每个赋值一“位”,然后对位进行适当的设置或清除,就可以对布尔值进行操作了。
一个BitSet类创建一种特殊类型的数组来保存位值。BitSet中数组大小会岁需要增加。
BitSet定义了两个构造方法:
1.BitSet()
2.BitSet(int size) //允许初始化大小,所有位初始化为0.

public class Main {
public static void main(String[] args) {
    BitSet bitSet1 = new BitSet(16);
    BitSet bitSet2 = new BitSet(16);

    for(int i = 0; i < 16; i++){
        if((i % 2 == 0))
            bitSet1.set(i);
        if((i % 5 != 0))
            bitSet2.set(i);
    }
    //bitSet1的初始值
    System.out.println(bitSet1);
    //bitSet2的初始值
    System.out.println(bitSet2);

    // and()、or()、xor()方法
    bitSet2.xor(bitSet1);
    System.out.println(bitSet2);
}
}

向量 Vector

向量类和传统数组非常相似,但是Vector的大小能根据需要动态的变化。
和数组一样,Vector对象的元素也能通过索引访问.

public class Main {
public static void main(String[] args) {
    Vector vector = new Vector(3, 2);
    System.out.println(vector.size());
    System.out.println(vector.capacity());

    vector.addElement(new Integer(1));
    vector.addElement(new Integer(2));
    vector.addElement(new Integer(3));
    vector.addElement(new Integer(4));

    //返回此向量当前的容量
    System.out.println(vector.capacity());
    vector.addElement(new Double(8.88));
    System.out.println(vector.capacity());
    vector.addElement(new String("Jack"));
    System.out.println(vector.capacity());

    //返回此向量中的组件数
    System.out.println(vector.size());

    System.out.println(vector.firstElement());
    System.out.println(vector.lastElement());

    Enumeration vectorEnum = vector.elements();
    while(vectorEnum.hasMoreElements()){
        System.out.print(vectorEnum.nextElement() + " ");
    }
}
}

栈(Stack)

栈实现了一个后进先出的数据结构
栈是Vector的一个子类。
堆栈只定义了默认构造函数,用来创建一个空栈。堆栈除了包括由oVector定义的所有方法,也定义了自己的一些方法。

public class Main {
public static void main(String[] args) {
    Stack stack = new Stack();
    stack.push("001");
    stack.push("jack");
    System.out.println(stack);

    stack.push("Madge");
    System.out.println(stack.peek());

    System.out.println(stack.empty());

    System.out.println(stack);
    String str = stack.pop();
    System.out.println(str);
}
}

字典 Dictionary

字典类是一个抽象类,它定义了键映射到值的数据结构。

哈希表(Hashtable)

Hashtable类提供了一种在用户定义键结构的基础上来组织数据的手段。
Hashtable是原始的java.util的一部分,是一个Dictionary具体的实现。
它和HashMap类很相似,但是它支持同步。

public class Main {
public static void main(String[] args) {
    Hashtable table = new Hashtable();
    table.put("Jack", 100);
    System.out.println(table.get("Jack"));
    table.put("Madge", 100);
    System.out.println(table);
}
}

属性(Properties)

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

public class Main {
public static void main(String[] args) {
    Properties capitals = new Properties();
    capitals.put("China", "Beijing");
    capitals.put("US", "Washington");
    capitals.put("England", "Longdon");
    Set states = capitals.keySet();
    Iterator ite = states.iterator();
    while(ite.hasNext()){
        String str = (String)ite.next();
        System.out.println(str + " = " + capitals.getProperty(str));
    }
}
}

你可能感兴趣的:(Java数据结构)