zoukankan      html  css  js  c++  java
  • ArrayList,linkedList vecator的实现和区别

    1.线程安全问题。

        ArrayList 和 linkedList 线程是不安全的,而vecator是线程安全的。

      因为ArrayList 和 linkedList 是线程不同步的,vecator是同步的 取决于方法加上了关键字synchronized,主要是java程序会涉及锁的概念,而synchronized关键字是给方法或者类加上一个互斥锁,这种锁的作用就是当代码获得这个锁,其他的线程得等待。但是为了效率 很多时候我们都不用vecator,即使在多线程的情况下,arraylist和linkedList通过Collections的synchronizedList方法获取线程同步的arrayList和linkedList.

    2.实现

        ArrayList 实现上一个线性的数组,可以动态的改变数组的大小,其中的原理就是就是把旧的数据copy到新的数组中,这里需要一个负载因子小于等于1 ,当达到这个容量的时候就进行扩充,默认是10个数组,每次增加50%/1.5倍

        linkedList 实现上是一个双向链表结构,每次新增都会增加一个节点。

        vecator也是线性数组。 但是扩充的时候是默认是10数组,默认增加2倍,而vecator可以设置增加的数组倍数。

    3.区别

        Arraylist 查询比较快,通过下标可以查询,但是插入和删除比较慢,因为要移动下标。

        linkedList 是插入和删除比较快,但是查询比较慢,原因是查询的时候需要遍历集合,效率就比较慢了。

        vecator因为是线程安全的  查询,插入,删除效率低于arrayList。

  • 相关阅读:
    浏览器内核
    gulp菜鸟级零基础详细教程
    Mysql自连接的一些用法
    ListView和Adapter数据适配器的简单介绍
    Android轮播图
    css-flex布局知识梳理
    JavaScript 复杂判断的更优雅写法
    团队合作前端书写习惯总结
    常见的HTTP报头(头参数)
    常见的HTTP状态码
  • 原文地址:https://www.cnblogs.com/Seeasunnyday/p/6475233.html
Copyright © 2011-2022 走看看