IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> java 容器 结论+源码分析 总结 (1) -> 正文阅读

[系统运维]java 容器 结论+源码分析 总结 (1)

preview

?内容随时更新,最大程度的分析每个方法?

List

1、Vector

vector 是一个弃用的类,里面几乎所有的方法都用synchronized,说明他是一个线程同步的类,访问速度必然变慢,低层的数据结构是一个动态数组

基本用法:用法类似于数组

    @Test
    public void vectorTest() {
        //用空参构造器创建的vector对象,容量默认大小是10
        Vector<Object> objects = new Vector<Object>();

        //通过capacity()打印得到的容量大小
        System.out.println(objects.capacity());//控制台输出 10

        //储存1~10的数据
        for (int i = 0; i < 10; i++) {
            objects.add(i+1);
        }

        //取出储存的数据
        for (int i = 0; i < 10; i++) {
            System.out.println(objects.get(i));
        }



    }
}

构造方法:

??查看源码可以发现,创建一个Vector对象可以有四种方法

1、 空参构造方法初始化时的容量大小默认是10?

2、publlic Vector(int initialCapacity); 这个构造方法指定一个初始化容量大小

    @Test
    public void vectorTest1() {
        //使用public Vector(int initialCapacity)构造器构建Vector对象
        Vector<Object> objects = new Vector<Object>(20);

        //打印objects容量大小
        System.out.println(objects.capacity());//控制台输出 20
    }

3、public Vector(int initialCapacity, int capacityIncrement); 该构造方法不仅指定容量初始化大小而且还指定该容器的自增大小

    @Test
    public void vectorTest2() {
        //1、用public Vector(int initialCapacity, int capacityIncrement)构造器 构建Vector对象
        Vector<Object> objects = new Vector<Object>(20,1);

        for (int i = 0; i < 21; i++) {
            objects.add(i + 1);
            if (i==19) {
                //当i等于19时,打印出容器的容量大小
                System.out.println(objects.capacity());//控制台输出 20
            }
        }
        //打印objects容量大小
        System.out.println(objects.capacity());//控制台输出 21 表明自增的大小是我们指定的capacityIncrement
    }

4、public Vector(Conllection c); 这个方法传递一个Collection集合进行构建vector对象

    @Test
    public void vectorTest3() {
        // 构建一个Collection对象
        Collection<Object> objects = new ArrayList<Object>();
        for (int i = 0; i < 10; i++) {
            //储存数据
            objects.add(i + 1);
        }
        //使用迭代器 进行遍历
        Iterator<Object> iterator = objects.iterator();
        while (iterator.hasNext()) {
            System.out.print(iterator.next()+" ");//经过遍历输出的结果:1 2 3 4 5 6 7 8 9 10 
        }
        System.out.println();
        //使用public Vector(Collection<? extends E> c) 构建一个vector 对象
        Vector<Object> objects1 = new Vector<Object>(objects);
        for (int i = 0; i < 10; i++) {
            System.out.print(objects1.get(i)+" ");//经过遍历输出的结果:1 2 3 4 5 6 7 8 9 10 
        }
    }

?方法源码:

?booleanadd(E?e)
??????????将指定元素添加到此向量的末尾。
?voidadd(int?index, E?element)
??????????在此向量的指定位置插入指定的元素。
?booleanaddAll(Collection<? extends E>?c)
??????????将指定 Collection 中的所有元素添加到此向量的末尾,按照指定 collection 的迭代器所返回的顺序添加这些元素。
?booleanaddAll(int?index, Collection<? extends E>?c)
??????????在指定位置将指定 Collection 中的所有元素插入到此向量中。
?voidaddElement(E?obj)

?add调用了private void add()查看且传入了被添加的元素e,还有elementData数组,int 型的elementCount

    /**
     * The array buffer into which the components of the vector are
     * stored. The capacity of the vector is the length of this array buffer,
     * and is at least large enough to contain all the vector's elements.
     *
     * <p>Any array elements following the last element in the Vector are null.
     *
     * @serial
     */
    protected Object[] elementData;//查看源码可以知道(The capacity of the vector is the length of this array buffer)这个数组的长度是vector容器的容量


    /**
     * The number of valid components in this {@code Vector} object.
     * Components {@code elementData[0]} through
     * {@code elementData[elementCount-1]} are the actual items.
     *
     * @serial
     */
    protected int elementCount;//储存元素的有效个数

?源码跟进查看private void add()

源码跟进查看grow()方法

?源码跟进查看newCapacity()方法

跟进源码查看hugeCapacity()方法

总结:Vector容器是一个基于数组的数据结构储存方式,每次扩容都是对对数组复制操作,且是线程同步的方式,对于要求性能高的应用,不应用此方法,且Vector现在已经弃用了。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-10-04 13:11:34  更:2021-10-04 13:13:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:40:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码