zoukankan      html  css  js  c++  java
  • HashMap&Hashtable&LinkedHashMap&ConcurrentHashMap&Collections.synchronizedMap

    1、HashMap

    • 是一种哈希散列结构。JDK1.8中,它由数组+单向链表+黑红树构成。当链表数据量超过8时就会转变为一个红黑树,已降低时间复杂度。
    • 构造函数会创建一个空的HashMap,在插入第一个数据时才会初始化一个数组。它有2个重要的构造参数,分别叫初始容量(initialCapacity,默认16)和加载因子(loadFactor,默认0.75)。当数量量达到容量*加载因子时,HashMap就会进行扩容(每次扩展一倍),这是很耗时的过程,它会新申请一个数组,并重新计算原来数据的hash值。我们在new HashMap时应该要考虑容量问题。
    • 是个快存快取得数据结构,时间复杂度为O(1)
    • 不是线程安全的
    • 允许key和value都为NULL

    2、Hashtable

    • 继承的父类与HashMap不同
    • 线程安全的,它的接口方法通过synchronized关键字实现线程安全,所有它任何操作方法都是阻塞的(包括get方法)。
    • 不允许key和value为NULL

    3、LinkedHashMap

    • 继承HashMap,具有HashMap的所有特点

    4、ConcurrentHashMap

    • 继承AbstractMap,数据结构与HashMap相同
    • 以分段锁降低了锁竞争,同时又保证了线程安全
  • 相关阅读:
    command injection命令注入
    使用burp进行brute force破解
    vim 常用命令
    mysql.ini 配置
    便捷的 chrome/Firefox扩展
    canves 图片旋转 demo
    lucene 学习一
    php 命令行方式运行时 几种传入参数的方式
    mysql 命令行参数
    java 实现WebService 以及不同的调用方式
  • 原文地址:https://www.cnblogs.com/zhi-leaf/p/12820501.html
Copyright © 2011-2022 走看看