在java.util包下存在封装了一般数据结构的工具类,如List列表、Queue队列、Set集合等结构。Collection作为聚合对象的抽象类,在线程安全和非线程安全环境下都有其衍生类,下面具体介绍Collection类的框架图,整体了解下Collection。
- 非线程安全Collection
从图中可以很清晰的看出Collection包含的三大接口List、Queue和Set,它们分别代表着三种数据结构:列表、队列和集合,也就是常用的三种数据结构在java.util工具包中都进行了提供。其中List列表的实现类最丰富,有线性列表ArrayList、Vector和线性链表LinkedList;Queue队列的LinkedList链表实现;Set集合的HashSet和有序TreeSet。
- 线程安全Collection
从图中可以看出线程安全的Collection具有较多的派生类,而Queue的丰富实现则体现了线程队列数据结构在线程安全控制中的重要性。其中BlockingQueue阻塞队列下的ArrayBlockingQueue、DelayQueue、LinkedBlockingQueue、PriorityBlockingQueue和SynchronousQueue以及AbstractQueue下的ConcurrentLinkedQueue都在java.concurrent包下;Vector、Stack都是java.util包下的synchronized锁定方法的同步集合;Collections工具类下的静态内部类SynchronizedSet同步集合、SynchronizedList
同步列表及其衍生类都是作为Collection的同步工具类。
结束
Collection集合作为日常java业务开发最常用的工具类之一,有必要对其结构、框架进行了解,而线程安全和非线程两种形式都具有不同的派生体系,所以接下来将从这两方面进行介绍。