zoukankan      html  css  js  c++  java
  • Java Collection Framework 备忘点

    最顶端是两个接口,集合和映射——  Collection<T>  /  Map<K, V>

    List 列表        保持插入顺序

      ArrayList      擅长随机读

      LinkedList       增、删

      Arrays$ArrayList    定长List,功能有限

    Set

      HashSet      查找最快

      TreeSet       升序排序

      LinkedHashSet   保持插入顺序

    Queue 队列

      LinkedList     也实现了Queue接口,

      PriorityQueue    保持插入顺序

    Map 映射

      HashMap     散列映射,速度最快

      LinkedHashMap  保持插入顺序

      WeakHashMap   键不再使用时,值回报GC

      TreeMap      升序排序

    根据词缀总结一下

    List和带“Linked”的实现都能保持插入顺序。

    带"Hash"的实现速度都比较快,特别是读。

    带“Tree”的实现都能在插入是进行排序。

    以下的实现几乎没有理由再去使用

      Vector   最旧的List实现。几乎每个对外方法都是synchronized的,内部数组每次扩容时增长一倍,而不是像ArrayList一样增长50%。

      Hashtable  最旧的Map实现。几乎每个对外方法都是synchronized的,使用Enumeration进行迭代,contains性能太差。

      Stack    废弃API,LinkedList完全可以取代它。

    选择哪个实现?

      List    默认选择ArrayList,需要大规模的增删时,选择LinkedList,需要线程安全时,选择Collections.synchronizedList()。

      Set    默认选择HashSet,对排序、保持插入顺序有需求时,按需选择,需要线程安全时,选择Collections.synchronizedSet()或Collections.synchronizedSortSet(),

      Queue   默认选择LinkedList,对保持插入顺序有需求时,选择PriorityQueue。

      Map    默认选择HashMap,对排序、保持插入顺序有需求时,按需选择,需要线程安全时,选择Collections.synchronizedMap()或Collections.synchronizedSortMap(),

    线程相关的三种版本

    synchronizedMap为整个散列表加锁;ConcurrentHashMap采用分段锁,将散列表分割成16个散列桶,每个线程只锁一个桶。

  • 相关阅读:
    小程序接入第三方ui库(组件库)
    element ui表格的校验和自定义校验规则
    element ui表格 表头的的特殊处理(换行/jsx风格表头)以及上传组件的一点小问题
    MongoDB 配置本地服务
    乙方渗透测试之Fuzz爆破
    SSRF漏洞挖掘经验
    SQL注入绕过技巧总结
    Xss Bypass备忘录
    bilibili存储型xss (绕过长度限制打乱顺序限制)
    XSS攻击常识及常见的XSS攻击脚本汇总
  • 原文地址:https://www.cnblogs.com/deolin/p/7073040.html
Copyright © 2011-2022 走看看