zoukankan      html  css  js  c++  java
  • java集合:常用集合的数据结构

    List

    有序可重复

    ArrayList

    ArrayList数据结构是数组。查询快,增删慢。ArrayList是线程不安全的,允许元素为null 。

    Vector

    线程安全的数组,效率较差,已经过时不用。

    LinkedList

    LinkedList 数据结构是双向链表,插入删除比较方便。LinkedList 是线程不安全的,允许元素为null 。

    Map

    HashMap :

    jdk1.8中HashMap底层是哈希表数据结构,数组+链表+红黑树,HashMap是线程不安全的,允许使用null键和null值,

    HashMap根据键的HashCode值存储数据,具有很快的访问速度。

    HashMap存入的键值对在遍历时的顺序是随机的。

    HashMap不支持并发

    HashTable:

    线程安全,使用synchronized锁住全部数据,效率较低。

    LinkedHashMap:

    LinkedHashMap 是HashMap的一个子类,默认LinkedHashMap遍历时输出的顺序和put输入的顺序是相同的。

    LinkedHashMap有两种排序方式:插入排序和访问排序(修改或访问一个元素后,将该元素移到队列末尾),默认是插入排序。使用accessOrder来标记使用哪种排序方式,accessOrder==true时,表示使用访问排序,默认为false;

    LinkedHashMap使用了双向链表来保证了顺序性。

        public LinkedHashMap(int initialCapacity,
                             float loadFactor,
                             boolean accessOrder) {
            super(initialCapacity, loadFactor);
            this.accessOrder = accessOrder;
        }

    TreeMap:

    TreeMap底层是红黑树数据结构,线程不安全,可以用于给Map集合中的键进行排序

    TreeMap遍历出来的是排序后的键值对。

    ConcurrentHashMap

    ConcurrentHashMap是线程安全的,jdk1.8使用CAS和volatile实现。而jdk1.8以前通过锁分段技术、可重入锁实现。

    支持并发,可以一边更新一边遍历

    Set

    HashSet

    存放键值对,无序不重复。

  • 相关阅读:
    [NOIP提高&洛谷P1024]一元三次方程求解 题解(二分答案)
    浅谈二分答案的原理和相关应用
    Python 30分钟入门指南
    LG P1721 [NOI2016]国王饮水记
    LG P5238 整数校验器
    亡灵序曲
    线性代数三部曲(三)·矩阵
    线性代数三部曲(二)·Gauss消元
    关于$color{darkblue}{Anverking}$的介绍
    线性代数三部曲(一)·行列式
  • 原文地址:https://www.cnblogs.com/expiator/p/8478094.html
Copyright © 2011-2022 走看看