• 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。

  • 相关阅读:
    JSP内置/隐式对象(9个)
    会话技术——Cookie&Session
    Head First Java——读书笔记(一)
    并发和并行
    HotSpot
    域对象的比较
    书籍——Java
    润乾报表基础知识
    Android引导页过多导致OOM内存泄漏
    AngularJS 之1-初识
  • 原文地址:https://www.cnblogs.com/Seeasunnyday/p/6475233.html
Copyright © 2020-2023  润新知