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)比较类似。

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 很相似,还存在不同:

  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),即对象的垂直分布的栈,当你添加一个新元素时,就将新元素放在其他元素的顶部,从栈中取元素的时候,就从栈顶取一个元素。换句话说,最后进栈的元素最先被取出

    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);
        }
    
    
    }
    

 

11-12 09:35