JAVA 中常用的几个集合类
2011-08-09 11:50
274 查看
1. ArrayList
基于数组方式实现,无容量的限制。
在执行插入元素时可能要扩容,在删除元素时并不会减少数组的容量。
如果希望相应的缩小数组容量,可以调用trimToSize()
在查找元素时要遍历数组,对于非null的元素采取equals的方式寻找。
非线程安全。
2. LinkedList
基于双向链表机制实现。
元素的插入、移动较快。
非线程安全。
3. Vector
基于Object数组的方式来实现的。
基于synchronized实现的线程安全的ArrayList。
在插入元素时容量扩充的机制和ArrayList稍有不同:
如果capcacityIncrement > 0, 则Object数组的大小扩大为现有size加上capcacityIncrement;
如果capcacityIncrement < 0, 则Object数组的大小扩大为现有size的两倍;
4. Stack
基于Vector实现,支持LIFO。
5. HashSet
基于HashMap实现,无容量限制。
不允许元素重复。
非线程安全。
6. TreeSet
基于TreeMap实现,支持排序。
非线程安全。
7. HashMap
采用数组方式存储key、value构成的Entry对象,无容量限制。
基于key hash寻找Entry对象存放到数组的位置,对于hash冲突采用链表的方式来解决。
在插入元素时可能会扩大数组的容量,在扩大容量时会重新计算hash,并复制对象到新的数组中。
非线程安全。
8. TreeMap
基于红黑树实现,无容量限制。
非线程安全。
-----------------------------------
适用场景:
对于查找和删除较为频繁,且元素数量较多的应用,Set或Map是更好的选择;
ArrayList适用于通过为位置来读取元素的场景;
LinkedList 适用于要头尾操作或插入指定位置的场景;
Vector 适用于要线程安全的ArrayList的场景;
Stack 适用于线程安全的LIFO场景;
HashSet 适用于对排序没有要求的非重复元素的存放;
TreeSet 适用于要排序的非重复元素的存放;
HashMap 适用于大部分key-value的存取场景;
TreeMap 适用于需排序存放的key-value场景。
基于数组方式实现,无容量的限制。
在执行插入元素时可能要扩容,在删除元素时并不会减少数组的容量。
如果希望相应的缩小数组容量,可以调用trimToSize()
在查找元素时要遍历数组,对于非null的元素采取equals的方式寻找。
非线程安全。
2. LinkedList
基于双向链表机制实现。
元素的插入、移动较快。
非线程安全。
3. Vector
基于Object数组的方式来实现的。
基于synchronized实现的线程安全的ArrayList。
在插入元素时容量扩充的机制和ArrayList稍有不同:
如果capcacityIncrement > 0, 则Object数组的大小扩大为现有size加上capcacityIncrement;
如果capcacityIncrement < 0, 则Object数组的大小扩大为现有size的两倍;
4. Stack
基于Vector实现,支持LIFO。
5. HashSet
基于HashMap实现,无容量限制。
不允许元素重复。
非线程安全。
6. TreeSet
基于TreeMap实现,支持排序。
非线程安全。
7. HashMap
采用数组方式存储key、value构成的Entry对象,无容量限制。
基于key hash寻找Entry对象存放到数组的位置,对于hash冲突采用链表的方式来解决。
在插入元素时可能会扩大数组的容量,在扩大容量时会重新计算hash,并复制对象到新的数组中。
非线程安全。
8. TreeMap
基于红黑树实现,无容量限制。
非线程安全。
-----------------------------------
适用场景:
对于查找和删除较为频繁,且元素数量较多的应用,Set或Map是更好的选择;
ArrayList适用于通过为位置来读取元素的场景;
LinkedList 适用于要头尾操作或插入指定位置的场景;
Vector 适用于要线程安全的ArrayList的场景;
Stack 适用于线程安全的LIFO场景;
HashSet 适用于对排序没有要求的非重复元素的存放;
TreeSet 适用于要排序的非重复元素的存放;
HashMap 适用于大部分key-value的存取场景;
TreeMap 适用于需排序存放的key-value场景。
相关文章推荐
- 浅谈Java中几个常用集合添加元素的效率
- 比较Java中几个常用集合添加元素的效率
- 几个JAVA集合中常用的接口学习:Collection、Iterator和Map
- JAVA 中常用的几个集合类
- java集合常用的几个方法
- JAVA异常处理、常用类、反射、集合
- Java第四周常用类与集合框架上机实验四学会包装类常用方法使用
- java常用的集合删除操作
- Java学习之容器上(Collection接口常用方法,Iterator接口,使用foreach循环遍历Collection集合元素,Set集合通用知识(Hashset类,hashcode()与LinkedHashSet类))
- Java数据库编程中的几个常用技巧
- java中几个常用的字符串函数
- java中集合类中Collection接口中的List接口的常用方法熟悉
- JAVA 常用集合内部机制原理
- Java第四周常用类与集合框架之接口+抽象类9-9
- java 常用集合list与Set、Map区别及适用场景总结
- Java:常用集合类(List、Map、Set、Queue、Stack)
- java中常用集合
- java并发库之Executors常用的创建ExecutorService的几个方法说明
- Java程序员从笨鸟到菜鸟之(五)java开发常用类(包装,数字处理集合等)(下)
- java常用到的知识点总结之集合、泛型