Java數據結構(上)

  1. 枚舉(Enumeration
  2. 位集合(BitSet
  3. 向量(Vector
  4. 棧(Stack

1.Enumeration(枚舉)

  • boolean hasMoreElements( ):測試是否有更多的元素
  • Object nextElement( )若是此枚舉對象至少還有一個可提供的元素,則返回此枚舉的下一個元素

使用:

package com.day5;

import java.util.Enumeration;
import java.util.Vector;

/**
 * @author SFJ
 * @date 2019/11/11
 * @time 22:24
 **/
public class Test2 {
    public static void main(String[] args) {
        Enumeration<String>days;
        Vector<String>dayNo = new Vector<String>();
        dayNo.add("Sun");
        dayNo.add("Mon");
        dayNo.add("Tue");
        dayNo.add("Wed");
        dayNo.add("Thu");
        dayNo.add("Fri");
        dayNo.add("Sat");
        days = dayNo.elements();
        while (days.hasMoreElements())
        {
            System.out.println(days.nextElement());
        }

    }
}

2.BitSet(位集合

一個Bitset類建立一種特殊類型的數組來保存位值。BitSet中數組大小會隨須要增長。這和位向量(vector of bits)比較相似。java

BitSet定義了兩個構造方法。數組

1:構造方法(無參數)框架

BitSet()//建立默認對象

2:容許用戶指定初始大小,全部位初始化爲0測試

BitSet(int size)//數組的長度指定

使用:

package com.day5;

import java.util.BitSet;

/**
 * @author SFJ
 * @date 2019/11/11
 * @time 23:02
 **/
public class Test3 {
    public static void main(String[] args) {
        BitSet bits1 = new BitSet(16);
        BitSet bits2 = new BitSet(16);

        for(int i=0; i<16; i++) {
            if((i%2) == 0) bits1.set(i);
            if((i%3) != 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);
    }

}

3.Vector(向量)

Vector類和數組類似,可是Vector的大小能根據須要動態的變化。和數組同樣,Vector對象的元素也能經過索引訪問。使用Vector類最主要的好處就是在建立對象的時候沒必要給對象指定大小,它的大小會根據須要動態的變化。Vector 類實現了一個動態數組。和 ArrayList 很類似,還存在不一樣:spa

  1. Vector 同步訪問
  2. Vector 包含了許多傳統的方法,這些方法不屬於集合框架

構造方法:

  1. 無參構造,默認值爲10
    Vector()

     

  2. 制定建立大小
    Vector(int size)

     

  3. 指定大小,指定增量每次增長的元素個數
    Vector(int size,int incr)

     

  4. 包含集合C元素向量
    Vector(Collection c)

    使用:

package com.day5;

import java.util.Enumeration;
import java.util.Vector;

/**
 * @author SFJ
 * @date 2019/11/11
 * @time 23:12
 **/
public class Test4
{
    public static void main(String[] args) {
        // initial size is 3, increment is 2
        Vector v = new Vector(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));
        System.out.println("Capacity after additions: " + v.capacity());
        v.addElement(new Double(2.23));
        System.out.println("Current capacity: " +v.capacity());
        v.addElement(new Double(5.764));
        v.addElement(new Integer(7));
        System.out.println("Current capacity: " +v.capacity());
        v.addElement(new Float(3.4));
        v.addElement(new Integer(10));
        System.out.println("Current capacity: " + v.capacity());
        v.addElement(new Integer(11));
        v.addElement(new Integer(12));
        System.out.println("First element: " +
                (Integer)v.firstElement());
        System.out.println("Last element: " +
                (Integer)v.lastElement());
        if(v.contains(new Integer(3)))
            System.out.println("Vector contains 3.");
        // enumerate the elements in the vector.
        Enumeration vEnum = v.elements();
        System.out.println("\nElements in vector:");
        while(vEnum.hasMoreElements())
            System.out.print(vEnum.nextElement() + " ");
        System.out.println();
    }

}
}

 

4.Stack(棧)

  • 後進先出(LIFO),即對象的垂直分佈的棧,當你添加一個新元素時,就將新元素放在其餘元素的頂部,從棧中取元素的時候,就從棧頂取一個元素。換句話說,最後進棧的元素最早被取出code

    Stack()
    package com.day5;
    
    import java.util.Stack;
    
    /**
     * @author SFJ
     * @date 2019/11/11
     * @time 23:24
     **/
    public class Test5 {
        public static void main(String[] args) {
            Stack<Integer> st = new Stack<Integer>();
            System.out.println("stack: " + st);
            showpush(st, 1);
            showpush(st, 2);
            showpush(st, 3);
            showpop(st);
            showpop(st);
            showpop(st);
            showpop(st);
        }
    
        static void showpush(Stack<Integer> st, int a) {
            st.push(new Integer(a));
            System.out.println("push(" + a + ")");
            System.out.println("stack: " + st);
        }
    
        static void showpop(Stack<Integer> st) {
            System.out.print("pop:");
            Integer a = (Integer) st.pop();
            System.out.println(a);
            System.out.println("stack: " + st);
        }
    
    
    }
相關文章
相關標籤/搜索