- Queue家族
- 无论是queue还是stack,现在常用的是Deque的实现类:如单线程的ArrayQueue,多线程的ArrayBlockingQueue
- Deque:读作“deck”,算是一种“双端队列”,即支持头部和尾部的数据访问和增删。----支持stack和queue的操作
- 关系:ArrayDeque --> Deque(I) -> Queue(I) -> Collection(I),其中->表示继承,-->表示实现,(I)表示接口。
- 关系:Stack -> Vector ->AbstractList。Stack的方法不如Deque完整和稳定,所以优先采用Deque的实现类来表示Stack。
- List家族
- Vector和ArrayList基本一样,都是Collection家族List下的实现类,都是可变数组,只不过Vector是线程同步的,ArrayList不是。所以一般如果没有同步要求,都建议使用ArrayList
- LinkedList实现了很多接口,如List,Deque,它是双向链表,链表的一般操作都支持。不过也是单线程的(即非同步的),但是可能因为太大了?-->反正不经常使用
- Map家族
- HashMap和HashTable差不多。不过HashMap是单线程(非同步)的,而且支持null(键和值都是null)。HashTable是同步的,且键和值都不能为null。常用HashMap
- Set家族
- HashSet背后是HashMap在支撑,其add()操作添加的就是键值,因此HashSet不允许插入重复的值,当然允许插入null(hashmap允许空键)
上边是我常用的,这里copy一篇文章的总结(其中的deprecated应该指不常用,不赞成使用,倒不是废弃了):http://www.importnew.com/13801.html
单线程 | 并发 | |
Lists |
|
|
Queues / deques |
|
|
Maps |
|
|
Sets |
|
|
时间: 2024-12-28 01:12:37