• 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());
    
    
  • 相关阅读:
    muduo库源码剖析(一) reactor模式
    POSIX 线程编程(二)线程建立与终止
    visual assist常用快捷键
    Linux下 静态链接库 和 动态链接库
    linux(Ubuntu)下mysql字符集完美解决
    共享内存解读
    hdu2829
    hdu3525
    2013ACM-ICPC亚洲区南京站现场赛G题
    poj1487
  • 原文地址:https://www.cnblogs.com/liuyangfirst/p/13861909.html
Copyright © 2020-2023  润新知