JDK源码阅读-------自学笔记(二十五)(java.util.Vector 自定义讲解)

Vector 向量

Vector简述

  • 1).Vector底层是用数组实现的List
  • 2).虽然线程安全,但是效率低,所以并不是安全就是好的
  • 3).底层大量方法添加synchronized同步标记,synchronized检查对象是否添加了对象的对象锁
  • 4).容器对象,需要多个线程共享的时候,考虑使用Vector
  • 5).实际使用情况不多,一般笔试面试中会问到差异性

Vector与ArrayList、LinkedList简单区分

  • 需要线程安全时,使用Vector
  • 不存在线程安全问题时,并且查找较多用ArrayList(一般使用它)
  • 不存在线程安全问题时,增加或删除元素较多用LinkedList

Vector 实战

  • 1、创建Vector

       Vector<String> vectorList = new Vector<>();

        vectorList.add("C");
        vectorList.add("E");
        vectorList.add("A");
        vectorList.add("D");
        vectorList.add("B");

  • 2、测试Vector

System.out.println(vectorList.toString());


  • 3、源码查阅

方法:

从源码中可以看到方法的实现大致与List的相似,只是多了synchronized限制:

  • 4、常用方法实战
    • (1) 降序排序
        Vector<String> vectorList = new Vector<>();

        vectorList.add("C");
        vectorList.add("E");
        vectorList.add("A");
        vectorList.add("D");
        vectorList.add("B");
        
        // 降序排序
        vectorList.sort(Comparator.reverseOrder());
        System.out.println(vectorList.toString());
  • (2)升序排序
        Vector<String> vectorList = new Vector<>();

        vectorList.add("C");
        vectorList.add("E");
        vectorList.add("A");
        vectorList.add("D");
        vectorList.add("B");
        
        // 升序排序
        vectorList.sort(Comparator.naturalOrder());
        System.out.println(vectorList.toString());
  • (3)遍历输出每一个元素
        Vector<String> vectorList = new Vector<>();

        vectorList.add("C");
        vectorList.add("E");
        vectorList.add("A");
        vectorList.add("D");
        vectorList.add("B");

        // 遍历输出每一个元素
        vectorList.forEach((k) -> {
            System.out.println(k.toString());
        });
  • (4)输出index开始以后的元素
        Vector<String> vectorList = new Vector<>();

        vectorList.add("C");
        vectorList.add("E");
        vectorList.add("A");
        vectorList.add("D");
        vectorList.add("B");

        // 输出index开始以后的元素
        ListIterator<String> stringListIterator = vectorList.listIterator(3);

        while (stringListIterator.hasNext()) {
            String next = stringListIterator.next();
            System.out.println("stringListIterator:" + next);

        }
  • (5)过滤
        Vector<String> vectorList = new Vector<>();

        vectorList.add("C");
        vectorList.add("E");
        vectorList.add("A");
        vectorList.add("D");
        vectorList.add("B");

        // 过滤
        vectorList.removeIf(
                new Predicate<String>() {
                    @Override
                    public boolean test(String s) {
                        // 过滤掉等于C的
                        return "C".equals(s);
                    }
                }
        );

        System.out.println(vectorList.toString());

  • (6)截取从索引值1到2的元素
        Vector<String> vectorList = new Vector<>();

        vectorList.add("C");
        vectorList.add("E");
        vectorList.add("A");
        vectorList.add("D");
        vectorList.add("B");
        Vector<String> clone = (Vector<String>) vectorList.clone();


        //   截取从索引值1到2的元素
        List<String> stringList = clone.subList(1, 3);
        System.out.println("截取" + stringList.toString());

  • (7)替换数组内的值
        Vector<String> vectorList = new Vector<>();

        vectorList.add("C");
        vectorList.add("E");
        vectorList.add("A");
        vectorList.add("D");
        vectorList.add("B");

       UnaryOperator<String> unaryOperator = (String string) -> {

            return string + ".mrLiu";
        };

        // 替换数组内的值
        vectorList.replaceAll(unaryOperator);
        System.out.println(vectorList.toString());

  • (8)移除所有元素
        Vector<String> vectorList = new Vector<>();

        vectorList.add("C");
        vectorList.add("E");
        vectorList.add("A");
        vectorList.add("D");
        vectorList.add("B");
     
        // 移除所有元素
        vectorList.removeAllElements();
        System.out.println(vectorList.toString());

  • (9)添加元素
        Vector<String> vectorList = new Vector<>();

        vectorList.add("C");
        vectorList.add("E");
        vectorList.add("A");
        vectorList.add("D");
        vectorList.add("B");

        // 添加元素
        vectorList.addElement("H");
        System.out.println(vectorList.toString());

  • (10)修改元素
        Vector<String> vectorList = new Vector<>();

        vectorList.add("C");
        vectorList.add("E");
        vectorList.add("A");
        vectorList.add("D");
        vectorList.add("B");

        // 修改元素
        vectorList.insertElementAt("V", 0);
        System.out.println(vectorList.toString());

  • (11)首个元素
        Vector<String> vectorList = new Vector<>();

        vectorList.add("C");
        vectorList.add("E");
        vectorList.add("A");
        vectorList.add("D");
        vectorList.add("B");

        // 首个元素
        System.out.println(vectorList.firstElement());

       

  • (12)末尾元素
        Vector<String> vectorList = new Vector<>();

        vectorList.add("C");
        vectorList.add("E");
        vectorList.add("A");
        vectorList.add("D");
        vectorList.add("B");

         // 末尾元素
        System.out.println(vectorList.lastElement());

       

  • (13)容器大小
        Vector<String> vectorList = new Vector<>();

        vectorList.add("C");
        vectorList.add("E");
        vectorList.add("A");
        vectorList.add("D");
        vectorList.add("B");

         // 容器大小
        System.out.println(vectorList.capacity());

posted @ 2020-10-27 09:23  北极的大企鹅  阅读(151)  评论(0编辑  收藏