集合框架分析
Collection:List列表、Set集、Map:Hashtable,HashMap,TreeMap。
一、Collections:(单列集合)
1.List集合:元素有序、有重复、有索引。
- ArraysList:线程不安全;查询快、增删慢。(底层数据结构是数组结构)
- Vector:线程安全,但速度慢,已被ArrayList替代。(底层数据结构是数组结构)
- LinkedList:线程不安全;增删快、查询慢。(底层数据结构是列表结构)
2.Set集合:无重复、无索引。
- HashSet:线程不安全,增删快。HashSet是基于HashMap实现的,底层都是使用的HashMap中方法,是通过数组和链表来实现对数据的存储(1.8加入了红黑树,当链表过长的时候就使用红黑树)。
- TreeSet:线程不安全。TreeSet是基于TreeMap实现的,但是它是有序的。它的实现用到了红黑树这种数据结构,所以,当需要向TreeSet中存储对象时,这个对象必须实现Comparable接口,并复写里面的comparaTo方法,TreeSet就是根据这个来排序的。或者在新建TreeSet对象的时候,传入一个特定的比较器,这样它就知道根据什么进行排序了。
二、Map:(双列集合)
- HashMap: 线程安全,速度快。底层是哈希表数据结构。是同步的。不允许null作为键,允许null作为值。
- TreeMap: 可以用来对Map集合中的键进行排序。
- Hashtable: 线程安全,速度快。底层是哈希表数据结构。是同步的。不允许null作为键,允许null作为值。
— Properties:用于配置文件的定义和操作,使用频率非常高,同时键和值都是字符串。
三、Java库中的具体集合:
集合类型 | 描述 |
---|---|
ArrayList | 一种可以以动态增长和缩进的引索序列 |
LinkedList | 一种可以在任何位置进行高效地插人和删除操作的有序序列 |
ArrayDeque | 一种用循环数组实现的双端队列 |
HashSet | 一种没有重复元素的无序集合 |
TreeSet | 一种有序集 |
EnumSet | 一种包含枚举类型值的集 |
LinkedHashSet | 一种可以记住元素插人次序的集 |
PriorityQueue | 一种允许高效删除最小元素的集合 |
HashMap | 一种存储键/值关联的数据结构 |
TreeMap | 一种键值有序排列的映射表 |
EnumMap | 一种键值属于枚举类型的映射表 |
LinkedHashMap | 一种可以记住键/值项添加次序的映射表 |
WeakHashMap | 一种其值无用武之地后可以被垃圾回收器回收的映射表 |
IdentityHashMap | 一种用==而不是用equals比较键值的映射表 |