集合系列日记(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());
    }
}
时间: 2024-08-01 10:46:09

集合系列日记(17.5.13)的相关文章

集合系列日记(17.5.8)

list和set继承于collection的两个分支,list是有序的队列,里面是可以有重复的元素,而set像是数学中集合的概念,是没有重复的元素. 如图所示,抽象类abstractcollection实现了collection的大部分功能,而抽象类abstractlist和abstractset继承于abstractcollection,接口list和set分别实现了这两个类.collection接口中有一个方法lterator可以实现对元素的遍历. 1)collection是一个接口,是高度

集合系列日记(17.5.10)

fail-fast fail-fast是collection的一种错误机制,当多个线程对同一个容器进行操作的时候就会产生fail-fast事件,当有两个线程a和b,当线程a对容器进行遍历时,线程b改变了容器的东西,就会进行报错. public class Test { private static List<String> list=new ArrayList<String>(); public static void main(String[]args){ ThreadOne t

集合系列日记(17.5.9)

ArrayList是一个数组队列,相当于是一个动态的数组,可以实现增删查改和遍历的功能(继承于AbstractList类),可以随机访问(实现了RandmoAccess接口),而且可以根据元素的序列号,快速去获取对象. api接口(摘自http://www.cnblogs.com/skywang12345/p/3308556.html) // Collection中定义的API boolean add(E object) boolean addAll(Collection<? extends E

集合系列日记(17.5.5)

Stack是栈(先进后出) Stack也是通过数组来实现的,它只有一个构造函数Stack() boolean empty() synchronized E peek() synchronized E pop() E push(E object) synchronized int search(Object o) Stack()常见的功能↑ 待补充....先睡觉了

集合系列日记(17.5.20)

补充上一篇当中HashMap中的对外接口 1.clear():清空HashMap,它将所有的元素设为null(无效值)来实现 public void clear(){ modCount++; Entry[] tab=table; for(int i=0;i<tab.length;i++) tab[i]=null; size=0; } 2.containsKey():containsKey()的作用是判断HashMap是否包含key 3.containsValue():判断HashMap是否包含&qu

Java 集合系列 17 TreeSet

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 Java 集合系列 05 Vector详细介绍(源码解析)和使用示例 Java 集合系列 06 Stack详细介绍(源码解析)和使用示例 Java 集合系列 07 List总结(LinkedList, ArrayList等使用场景和

Java 集合系列17之 TreeSet详细介绍(源码解析)和使用示例

概要 这一章,我们对TreeSet进行学习.我们先对TreeSet有个整体认识,然后再学习它的源码,最后再通过实例来学会使用TreeSet.内容包括:第1部分 TreeSet介绍第2部分 TreeSet数据结构第3部分 TreeSet源码解析(基于JDK1.6.0_45)第4部分 TreeSet遍历方式第5部分 TreeSet示例 转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=3311268 第1部

Java 集合系列13之 WeakHashMap详细介绍(源码解析)和使用示例

概要 这一章,我们对WeakHashMap进行学习.我们先对WeakHashMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用WeakHashMap.第1部分 WeakHashMap介绍第2部分 WeakHashMap数据结构第3部分 WeakHashMap源码解析(基于JDK1.6.0_45)第4部分 WeakHashMap遍历方式第5部分 WeakHashMap示例 转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPo

Java 集合系列 13 WeakHashMap

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 Java 集合系列 05 Vector详细介绍(源码解析)和使用示例 Java 集合系列 06 Stack详细介绍(源码解析)和使用示例 Java 集合系列 07 List总结(LinkedList, ArrayList等使用场景和