zoukankan      html  css  js  c++  java
  • 集合Collection

    常用集合类

    • List
    1. ArrayList
      list接口的可变数组实现,允许所有元素,包括null;
      非线程安全;
      底层使用的数据结构为数组;
      适合查改,弱于增删
    2. LinkedList
      list接口中的链表列表实现,允许所有元素,包括null;
      实现Deque接口,提供先进先出的队列操作以及其他堆栈和双端队列操作;
      非线程安全;
      适合增删,弱于查改
    • Map
    1. HashMap
      基于哈希表的Map接口实现,并允许使用null值和null键;
      非线程安全;
      不保证映射的顺序,特别是它不保证该顺序恒久不变;

    2. HashTable
      HashTable和HashMap采用相同的存储机制,二者的实现基本一致;
      不允许有null值得存在;
      HashTable是线程安全的,内部的方法基本都是synchoronized;
      迭代器具有强一致性;

    3. TreeMap
      Map接口的树显示;红黑树
      不允许有null值的存在;
      非线程安全;
      键值有序;
      TreeMap的优势

      1. 空间利用率高
      HashMap的数组大小必须要2的n次方;
      TreeMap中树的每一个节点就代表了一个元素;
      2. 性能稳定
      Hash碰撞会导致HashMap查询开销提高
      HashMap扩容时会rehash,开销高
      TreeMap的操作均能在O(log n)内完成
      
    4. LinkedHashMap
      Map接口的哈希表和链接链表实现,允许使用null值和null键;
      非线程安全;
      具有可预知的迭代顺序;
      Map的使用范围

      1. HashMap适用于一般的键值映射需求
      2. HashTable适用于有多线程并发的场合
      3. TreeMap适用于要按照键排序的迭代场合
      4. LinkedHashMap适用于特殊顺序的迭代场合(如LRU算法)
      
    • Set
    1. HashSet
      实现Set接口,由哈希表支持,允许使用null元素;
      非线程安全;
      不保证set的迭代顺序,特别是不保证该顺序恒久不变;

    2. TreeSet

    3. LinkedHashSet

      Set的特点

      1. HashSet通过HashMap实现
      2. TreeSet通过TreeMap实现
      3. LinkedHashSet通过LinkedHashMap实现
      4. Set类与Map类拥有近似的使用特性
      
  • 相关阅读:
    flask
    admin站点管理
    DRF
    基础
    通过djangocrontab扩展来实现 定时任务
    配置asgi来达到能处理websocket
    用es实现模糊搜索
    迁移问题
    启动活动的最佳写法
    启动活动的最佳写法
  • 原文地址:https://www.cnblogs.com/hunter-w/p/13812403.html
Copyright © 2011-2022 走看看