11.向TreeSet中添加元素的时,只有第一个元素无须实现Comparable接口,后面添加的对象都必须实现Comparable接口,当然这不是一个好的做法,因为当试图从TreeSet中取出元素时,依然会引起classException异常。
12.EnumSet在内部一位向量的形式存储,这种存储形式非常紧凑高效,另外EnumSet集合不允许加入NULL值。
13.hash性能总是比TreeSet性能要好(特别是常用的添加、查询元素等操作)因为treeSet需要额外的红黑树算法来维护集合元素的次序,只有当需要一个保持排序的Set时,才应该使用TreeSet,否则都应该使用HashSet。
14.Vector具有很多的缺点,通常尽量少用Vector实现类。
15.ArrayList和Vector的显著区别是:
ArrayList是线程不安全的,当多个线程访问一个ArrayList是,则程序员必须通过手动保证该集合的同步性,但Vector集合是线程安全的,所以Vector的性能比ArrayList要低。
16.LinkedList是List的实现类,他是一个链表实现的List类,对于顺序访问集合中的元素进行了优化,特别是插入、删除元素、由于实现了Deque接口,因此可以当做栈来使用。
17.DEque代表了一个“双端队列”,双端队列可以同时从双端来添加、删除元素,因此Deque的实现即可以当成队列来使用,也可以当成栈来使用。
18.proprityQueue是一个比较标准的队列实现,他保存队列元素的顺序并不是按添加队列的顺序而是按照队列元素的大小进行重新排序。它已经违反了队列的基本原则-先进先出(FIFO),不允许插入null.
19.LinkedList不仅提供了List的功能,还提供了双端队列、栈的功能。
20.名称 实现机制 随机访问 迭代操作 插入操作 删除操作
数组 连续内存区保存元素 1 不支持 不支持 不支持
ArrayList/ArrayDeque 以数组保存元素 2 2 2 2
Vector 以数组保存元素 3 3 3 3
LinkedList 双向链表实现元素存储 4 1 1 1