首页 > 代码库 > 集合系列日记(17.5.13)

集合系列日记(17.5.13)

Vector

Vector继承于AbstractList,是一个队列,支持相关的添加、删除、修改、遍历等功能,我们可以通过元素的序号来获取元素对象,从而实现List的快速访问,并且Vector是线程安全的。

Vector共有4个函数

?Vector()  //默认的构造函数

?Vector(int capacity)  //capacity是Vector默认的容量大小,由于每次增加时,会导致Vector的容量增加一倍

?Vector(int capacity,int capacityIncrement)  //capacity是vector的容量大小,capacityIncrement是增加的量的大小

?Vector(Collection<? extends E>collection)  //创建一个含Collection的Vector

Vector是通过数组去保存数据,当我们进行构造时,默认容量大小是10,当其不足以容纳元素时,容量便会增加

Vector共有4种遍历方式

通过迭代器进行遍历;通过for循环进行遍历;随机进行访问;Enumeration遍历

public class Test {
    public static void main(String[]args){
        Vector vec=new Vector();
        for(int i=0;i<100000;i++){
            vec.add(i);
        }
        isRandomAccessSupported(vec);
        iteratorThroughRandomAccess(vec);
        forThroughRandomAccess(vec);
        randomThroughRandomaccess(vec);
        enumerationThroughRadomaccess(vec);
    }
    private static void isRandomAccessSupported(List list){
        //instanceof the RandomAccess
        if(list instanceof RandomAccess){
            System.out.println("RandomAccess is implemented!");
        }else{
            System.out.println("RandomAccess is not implemented!");
        }
        
    }
    //iterator
    public static void iteratorThroughRandomAccess(List list){
        long startTime;
        long endTime;
        startTime=System.currentTimeMillis();
         for(Iterator iter = list.iterator(); iter.hasNext(); ) 
         {
              iter.next();
                     }
        endTime=System.currentTimeMillis();
        long inval=endTime-startTime;
        System.out.println(inval);
    }
    //for
    public static void forThroughRandomAccess(List list){
        long startTime;
        long endTime;
        startTime=System.currentTimeMillis();
        for(Object obj:list);
        endTime=System.currentTimeMillis();
        System.out.println((endTime-startTime));
    }
    //random
    public static void randomThroughRandomaccess(List list){
        long startTime;
        long endTime;
        startTime=System.currentTimeMillis();
        for(int i=0;i<list.size();i++){
            list.get(i);
        }
        endTime=System.currentTimeMillis();
        System.out.println((endTime-startTime));
    }
    //Enumeration
    public static void enumerationThroughRadomaccess(Vector vec){
        long startTime;
        long endTime;
        startTime=System.currentTimeMillis();
        for(Enumeration enu = vec.elements(); enu.hasMoreElements(); ) {
            enu.nextElement();
        }
        endTime = System.currentTimeMillis();
        long interval = endTime - startTime;
        System.out.println("iteratorThroughEnumeration:" + interval+" ms");
    }
}

此处用迭代器遍历有疑问?mark

Vector部分功能:

public class Test {
    public static void main(String[]args){
        Vector vec=new Vector();
        
        
        // 添加元素
        vec.add("1");
        vec.add("2");
        vec.add("3");
        vec.add("4");
        vec.add("5");

        // 设置第一个元素为100
        vec.set(0, "100");
        // 将“500”插入到第3个位置
        vec.add(2, "300");
        System.out.println("vec:"+vec);

        // (顺序查找)获取100的索引
        System.out.println("vec.indexOf(100):"+vec.indexOf("100"));
        // (倒序查找)获取100的索引
        System.out.println("vec.lastIndexOf(100):"+vec.lastIndexOf("100"));
        // 获取第一个元素
        System.out.println("vec.firstElement():"+vec.firstElement());
        // 获取第3个元素
        System.out.println("vec.elementAt(2):"+vec.elementAt(2));
        // 获取最后一个元素
        System.out.println("vec.lastElement():"+vec.lastElement());

        // 获取Vector的大小
        System.out.println("size:"+vec.size());
        // 获取Vector的总的容量
        System.out.println("capacity:"+vec.capacity());

        // 获取vector的“第2”到“第4”个元素
        System.out.println("vec 2 to 4:"+vec.subList(1, 4));

        // 通过Enumeration遍历Vector
        Enumeration enu = vec.elements();
        while(enu.hasMoreElements())
            System.out.println("nextElement():"+enu.nextElement());
            
        Vector retainVec = new Vector();
        retainVec.add("100");
        retainVec.add("300");
        // 获取“vec”中包含在“retainVec中的元素”的集合
        System.out.println("vec.retain():"+vec.retainAll(retainVec));
        System.out.println("vec:"+vec);
            
        // 获取vec对应的String数组
        String[] arr = (String[]) vec.toArray(new String[0]);
        for (String str:arr)
            System.out.println("str:"+str);

        // 清空Vector。clear()和removeAllElements()一样!
        vec.clear();
//        vec.removeAllElements();

        // 判断Vector是否为空
        System.out.println("vec.isEmpty():"+vec.isEmpty());
    }   
}

 

集合系列日记(17.5.13)