问:什么是 J**a Collections 框架?
答:j**a 集合框架包含大量的集合接口,以及这些接口的实现类和操作它们的算法(例如,排序、查找、反转、替换、复制、获取最小元素、获取最大元素等)。具体来说,提供了 list、queue、set、stack、map 等数据结构来存储键值对。列表、队列、集和堆栈都是从集合 API 继承的。
集合是整个集合框架的基础,它存储了一组对象,表示不同类型的集合,它的作用只是提供一个基本的接口来维护一组对象。
下面介绍三个接口:set、list和map。
set 代表数学意义上的集合概念。其主要特点是:集合中的元素不能复制,因此存放在集合中的每个元素都必须定义 equals() 方法,以确保对象的唯一性。 该接口有两个实现类:hashset 和 treeset。其中 TreeSet 实现 sortedset 接口,因此 treeset 容器中的元素是有序的。
列表也称为有序集合。 它按照对象输入的顺序保存对象因此,它可以应用于每个列表精确控制元素的插入和删除。同时,它可以保存重复对象。LinkedList、ArrayList 和 Vector 都实现了 List 接口。
映射提供从键映射到值的数据结构。 它用于保存键值对,其中值可以重复,但键是唯一的,不能重复。在 J**A 类库中有几个实现此接口的类:HashMap、TreeMap、LinkedHashMap、WeakHashMap 和 IdentityHashMap。 虽然它们都实现了相同的接口,但执行效率并不完全相同。 具体来说,hashmap是基于hash表实现的,对象的hashcode可以用于快速查询。 LinkedHashMap 使用列表来维护内部秩序。 树状图是基于红黑树的数据结构实现的,内部元素根据需要进行排列。
集合的框架类图如下图所示: