Java 容器
- List
- Set
- Map
- Queue
- Iterator
- 工具类
- 并发容器
- android中的特殊集合
相关接口
Iterable 代表可迭代,实现的方法需要产出一个迭代器
Collection 除了Map外的祖先集合接口
List
Set
Map
Set 和 List都是一路继承Collection下来
Map则是单独的
List
定义了以套通过索引进行获取,和添加的集合
- ArrayList 内部是一个动态扩容的数组实现。
- LinkedList 内部是一个双向链表实现
- Vector 内部也是动态扩容的数组实现,不过大部分方法通过synchronized进行锁住方法,是线程安全的,但是效率不高。
- Stack Vector的子类
Set
定义了一组不可重复的集合,通过哈希值来判断
- HashSet 内部是通过一个HashMap来实现,等同于HashMap的键,值恒为同一个Object
- TreeSet 内部是通过一个TreeMap来实现
Map
定义了通过键值映射的集合
- HashMap 内部通过 数组 + 链表 + 红黑树进行实现的Map
- TreeMap 内部通过红黑树进行实现,保持内部排序顺序
- HashTable 古老实现,线程安全,效率不高
- Properties key和value都是String类型
Queue
队列
Iterator
生成器,用于foreach循环
工具类
- Arrays包含了许多对数组进行排序,复制等操作的工具类
- Collections包含许多对集合进行操作
- Comparators包含对比较器的工具
并发容器
以上中只有Vectoer和HashTable是线程安全的,但是它是将整个集合都锁住了,效率不高。
- CopyOnWriteArryList
- CopyOnWriteArraySet 写时复制,在写入的时候创建一个副本进行写入,当迭代多于修改,应该使用写时复制容器
- ConcurrentHashMap
- ConcurrentSkipListSet
- 阻塞队列
ConcurrentMap容器:1.8以前采用锁分段技术,1.8开始使用CAS无锁技术。
android中特殊容器
SparseArray 使用稀疏数组实现的一个key为int,value为Object的集合
LongSparseArray key为long value为object
SparseLongArray key为int value为long
SparseBooleanArray key为int value为boolean
SparseIntArray key为int value为int