zoukankan      html  css  js  c++  java
  • 集合整理

    集合整理

    一、概述

    集合顶层分为 CollectionMap

    其中Collection分为listset

    list有Arraylist、vector、linkedlist

    ArrayList存取有序,可重复,底层是用数组,查询速度快,增删速度慢,线程不安全,扩容倍数是1.5倍+1

    vector存取有序,可重复,底层是数组,查询速度快,增删慢,线程安全效率低,默认扩展一倍容量

    linkedlist存取有序,可重复,底层使用双向循环列表数据结构,查询速度慢,增删快,线程不安全,有专门用于操作表头和表尾的方法,可以当做堆、栈、队列和双向队列使用

    总结:所有的list集合都是存取有序,可重复的,区别是底层是数组的查询快,增删慢,底层是链表的查询慢,增删快。

    set集合分为hashset、TreeSet、linkedHashSet

    HashSet:存取无序,不可重复,底层使用Hash表实现,存取速度快,内部是HashMap

    TreeSet:存取无序,不可重复,但是是排序存储,或者升序,或者降序,存储自定义对象的时候,要实现comparable接口,重写compareTo函数,规定排序规则,底层使用二叉树。

    LinkedHashSet:存取有序,因为使用Hash表存储,使用双向链表记录插入顺序,内部是LinkedHashMap

    总结:HashSet存取无序,不可重复,TreeSet,存取无序,但是排序存储。LinkedHashSet存取有序,不可重复。

    Map集合有:HashMap、HashTable、TreeMap

    HashMap:键不可重复,值可重复,底层是数组+链表+红黑树、线程不安全、允许key值为null只允许一条,value也可以为null可以多条。

    capacity:扩容为2倍,loadFactor:负载因子为0.75.

    每个存储单位包括:key、value、hash、单向链表的next。

    扩容的阈值是capacity*loadFactor

    链表数据超过八个,链表会进化成红黑树,减少到6个会退回链表

    ConcurrentHashMap

    ConcurrentHashMap是hashMap的线程安全版本。它由一个个的Segment组成,可以理解成部分、一段、分段锁或者槽来理解。

    Segment通过集成Reentrantlock来进行加锁,所以每次并发操作,锁住的是segment,以此来实现并发安全。

    concurrenthashmap的并行度默认是16,也就是理论上最多可以同时支持十六个线程并发写。这个值初始化的时候可以改变,一旦初始化后不可以扩容。

    其实可以看成concurrentHashMap是HashMap的集合,每个segment都是一个HashMap。

    HashTable:键不可重复,值可重复,底层哈希表,线程安全,key、value不允许为null。

    TreeMap:键不可重复,值可重复,底层二叉树。有自然排序,按照倒叙(按着插入顺序的倒叙)的方法取出,有定制排序,自己定制排序规则

    总结:Map的键都不可重复,值可重复,其中HashMap的key允许一次空值,value可以多条都是空值。map线程不安全,hashtable和concurrenthashmap线程安全,concurrenthashmap并发更高。treemap排序存储。

  • 相关阅读:
    Java高级之类结构的认识
    14.8.9 Clustered and Secondary Indexes
    14.8.4 Moving or Copying InnoDB Tables to Another Machine 移动或者拷贝 InnoDB 表到另外机器
    14.8.3 Physical Row Structure of InnoDB Tables InnoDB 表的物理行结构
    14.8.2 Role of the .frm File for InnoDB Tables InnoDB 表得到 .frm文件的作用
    14.8.1 Creating InnoDB Tables 创建InnoDB 表
    14.7.4 InnoDB File-Per-Table Tablespaces
    14.7.2 Changing the Number or Size of InnoDB Redo Log Files 改变InnoDB Redo Log Files的数量和大小
    14.7.1 Resizing the InnoDB System Tablespace InnoDB 系统表空间大小
    14.6.11 Configuring Optimizer Statistics for InnoDB 配置优化统计信息用于InnoDB
  • 原文地址:https://www.cnblogs.com/gushiye/p/13961080.html
Copyright © 2011-2022 走看看