zoukankan      html  css  js  c++  java
  • Java集合01——List 的几个实现类,了解一下?

    从本文起,我们将开始分享 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 栈。

  • 相关阅读:
    2019 web安全基础知识学习
    nc语法和nc木马远程控制主机
    公钥、私钥、hash、数字签名、CA以及验证过程
    A5/1流加密理解和算法实现
    TCP/IP和OSI/RM以及协议端口
    【转】TCP/IP网络协议各层首部
    校园网 虚拟机VMware Linux桥接模式 无法上网 问题
    本地远程查看服务器tomcat 上虚拟机信息
    跨域访问的解决
    混合调用tk.mybatis.mapper 与 自编xml文件 的配置
  • 原文地址:https://www.cnblogs.com/weechang/p/12457682.html
Copyright © 2011-2022 走看看