zoukankan      html  css  js  c++  java
  • 集合类基础知识

    1.LinkedHashMap和HashMap和TreeMap和HashTable和concurrentHashTable的区别

    HashMap是由数组和链表或红黑树组成,先通过key的hash值来确定在数组中的位置,该位置可以放链表放相同hash值的entry。

                   当链表长度大于8时转红黑树。

    LinkedHashMap是有序的,继承了HashMap,entry放在双向链表Node中来确保有序存放。

    TreeMap是排序的,自动升序排列。比较慢

    Hashtable是线程安全的,性能差,整个方法synchronize。

    ConcurrentHashMap是Java5后替代HashTable的,CAS加方法内部分synchronized比Hashtable好。

        由Node<K,V>[] table数组和链表和红黑树组成

        先根据key算出hash值,根据hash值放在数组的某个位置上。若该位置Node为空没有元素,则使用CAS方式尝试添加根据该对象的偏移量判断当前值和期待的                 值一样则更新成新值。

        如果该Node有元素则用synchronize锁定该Node,遍历列表修改或者添加末尾,红黑数的话就添加到树上。

    2.ArrayList和LinkedList和Vector的区别

    ArrayList是数组结构,只有当数组放满才会1.5倍扩容,LinkedList是链表, Vector是线程安全的

    3.HashSet和LinkedHashSet和TreeSet的区别

    HashSet底层是HashMap

    LinkedHashSet 底层是LinkedHashMap

    TreeSet 底层是TreeMap是有序的,自动升序排列

  • 相关阅读:
    马尔科夫过程的CKS方程的推导
    科研的一些工具和想法
    读研究生后的一些想法
    读过的一些好书以后可做参考
    latex学习笔记
    机器人工程师学习要求
    《MySQL实战45讲》(8-15)笔记
    《MySQL实战45讲》(1-7)笔记
    java11运行javaFX项目
    ClickHouse入门笔记
  • 原文地址:https://www.cnblogs.com/t96fxi/p/12397749.html
Copyright © 2011-2022 走看看