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

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

  • 相关阅读:
    什么是软件质量?
    软件生存周期及其模型是什么?
    给你一个网站,你如何测试?
    jquery中$.get()提交和$.post()提交有区别吗?
    JQuery有几种选择器?
    ajax和layui总结
    md5加密
    Collection接口相关介绍
    JS 中document.URL 和 windows.location.href 的区别
    window.location.href的用法(动态输出跳转)
  • 原文地址:https://www.cnblogs.com/expiator/p/8478094.html
Copyright © 2011-2022 走看看