• Java集合框架总结图


    • Collection 接口的接口(对象集合)
    • ├——-List 接口:元素都有索引可以重复有序(迭代器顺序)
    • │—————-├ LinkedList 接口实现类, 双向链表查询慢,增删快,效率高, 没有同步, 线程不安全
    • │—————-├ ArrayList 接口实现类, 数组 查询快,增删慢,效率高,支持随机访问, 没有同步, 线程不安全
    • │—————-└ Vector 接口实现类 数组查询快,增删慢,效率低, 同步, 线程安全
    • │———————-└ Stack 是Vector类的实现类
    • └——-Set 接口: 仅接收一次,不可重复,并做内部排序,存储和取出顺序不一致
    • ├ —————└ TreeSet 底层实现为二叉树,支持自然排序(默认)和定制排序不允许null值
    • ├—————-└ HashSet 使用hash表(数组)存储元素 ,无序,允许null值
    • └————————└ LinkedHashSet元素插入的顺序来维护集合的链接表,允许null值
    • Map 接口 键值对的集合 (双列集合)
    • ├———Hashtable 接口实现类,哈希表(数组+链表),不允许key、value 是null,无序, 同步, 线程安全(全部锁)
    • ├———HashMap  接口实现类,哈希表(数组+链表)允许一个 key 为 null无序,没有同步, 线程不安全
    • │—————–├ LinkedHashMap双向链表哈希表实现 ,key和value都允许为空迭代器顺序,线程不安全
    • │—————–└ WeakHashMap
    • ├ ——–TreeMap 红黑树对所有的key进行排序,value允许为null,key不允许为null红黑树顺序(可自定义),线程不安全
    • ├ ——–ConcurrentHashMap 数组+链表+红黑树,不允许key、value 是null,无序,线程安全(部分锁)
    • └———IdentifyHashMap

    ——————————————————————————————————————————————

    ConcurrentHashMap的应用场景是高并发,但是并不能保证线程安全。
    ConcurrentHashMap能够保证每一次调用都是原子操作,但是并不保证多次调用之间也是原子操作。

    ConcurrentHashMap是使用了锁分段技术技术来保证线程安全的。
    锁分段技术:首先将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问。

  • 相关阅读:
    Halcon学习笔记之缺陷检测(二)
    tensorflow常用函数库
    luogu P2765 魔术球问题 (最小路径覆盖)
    luogu P2423 [HEOI2012]朋友圈 (最大团)
    poj 2226 Muddy Fields (二分图)
    匈牙利算法板子
    二分图
    AC日记——【模板】树链剖分 洛谷 P3384
    AC日记——[ZJOI2008]树的统计Count bzoj 1036
    去重排序
  • 原文地址:https://www.cnblogs.com/zhaojinhui/p/16044909.html
Copyright © 2020-2023  润新知