美文网首页Java速记手册
Java集合01——List 的几个实现类,了解一下?

Java集合01——List 的几个实现类,了解一下?

作者: Java面典 | 来源:发表于2020-03-04 17:15 被阅读0次

从本文起,我们将开始分享 Java 集合方面的知识,关注公众号「Java面典」了解更多 Java 知识点。

List 是继承于 Collection 的接口,其实现类有 ArrayList,LinkedList,Vector 和 Stack。

ArrayList

特点

  • ArrayList 内部是通过动态数组实现的,它允许对元素进行快速随机访问
  • 当数组大小不满足时需要扩容,需要将已有数组移动到新的内存空间;
  • 当从 ArrayList 的中间位置插入或者删除元素时,需要对数组进行复制、移动代价比较高;
  • 线程不安全

容量

  • 初始容量:10,
  • 扩容:(原始容量 x 3 ) / 2 + 1。

适用场景

  • ArrayList 适合单线程,或多线程环境,但 List 只会被单个线程操作;
  • 随机查找和遍历,不适合插入和删除。

LinkedList

特点

  • LinkedList 是基于双向链表存储数据的,很适合数据的动态插入和删除;
  • 可根据索引值获取(get(int index)))或删除(remove(int index))节点(实现原理:通过计数索引值实现,当 index > 链表长度的1/2,从链表尾部开始遍历;反之,从链表头部开始遍历);
  • 可作为队列和栈使用,
  • 线程不安全

适用场景

它适合单线程中,顺序读取,不适合随机读取和随机删除。

Vector

特点

其特点大致与 ArrayList 一样,除以下特点:

  • 线程安全(因为内部方法都是通过 synchronized 关键字同步的)。

容量

  • 初始容量:10;
  • 扩容:若扩容系数 > 0,则将容量的值增加“扩容系数”;否则,将容量大小增加一倍。

使用场景

Vector 使用多线程,避免多线程同时写而引起的不一致性。

Stack

Stack 相当于一个 Vector 栈。

相关文章

  • Java集合01——List 的几个实现类,了解一下?

    从本文起,我们将开始分享 Java 集合方面的知识,关注公众号「Java面典」了解更多 Java 知识点。 Lis...

  • Java中的List你真的会用吗?

    List是Java中比较常用的集合类,关于List接口有很多实现类,本文就来简单介绍下其中几个重点的实现Array...

  • Java中的List总结

    List是Java中比较常用的集合类,关于List接口有很多实现类,本文就来简单介绍下其中几个重点的实现Array...

  • 2018-08-08

    java集合类的底层实现 LinkedList底层实现和原理 LinkedList类是List接口的实现类,它是一...

  • Java集合

    Java中的集合有两类:一类是Collection接口集合,实现有List和Set;还有一类是Map接口集合,实现...

  • kotlin中的集合

    集合Java中常用的集合主要是List、Set和Map接口,List的实现类是ArrayList和LinkedLi...

  • ArrayList&LinkedList源码分析

    引言 基于Java集合框架图,本文针对List集合的主要实现类 ArrayList和LinkedList从...

  • Android面试Java基础篇(一)

    问:Java集合类List,Map,Set相关的实现原理。 答:List和Set都是Collection的子类 ...

  • ArrayList 与 LinkedList的性能区别

    Java集合类 Set:无序、不可重复;List有序、重复的集合;Queue代表队列集合实现;Map代表具有映射关...

  • Java基础(五)

    Java集合 接口继承关系和实现 集合类存放于 Java.util 包中,主要有 3 种:set(集)、list...

网友评论

    本文标题:Java集合01——List 的几个实现类,了解一下?

    本文链接:https://www.haomeiwen.com/subject/qahhqhtx.html