(1)Collection和Collections的关系:
Collection是Java集合类的根接口,List、ArrayList和Vector等常用集合类都是继承 Collection的。 Collections完全是一个静态类,不可实例化,它包装了很多操作或返回Collection对象的静态方法,例如sort(List<T> list)(对集合进行排序),swap(List<?> list, int i, int j)(把集合对象中指定位置的元素互换)等。
(2)List和Set的异同点:
List接口:List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。和下面要提到的Set不同,List允许有相同的元素。
Set接口:Set是一种不包含重复的元素的Collection,即任意的两个元素e1和e2都有e1.equals(e2)=false,Set最多有一个null元素。很明显,Set的构造函数有一个约束条件,传入的Collection参数不能包含重复的元素。
(3)Map有哪些常用类,各有什么特点?
Map常用类:HashMap、HashTable、TreeMap。
HashMap特点: 基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap类与 Hashtable大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
HashTable特点: 实现一个哈希表,该哈希表将键映射到相应的值。任何非 null对象都可以用作键或值。为了成功地在哈希表中存储和获取对象,用作键的对象必须实现 hashCode方法和 equals 方法。
TreeMap特点:基于红黑树(Red-Black tree)的 NavigableMap实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator进行排序,具体取决于使用的构造方法。此实现为 containsKey、get、put 和 remove 操作提供受保证的 log(n) 时间开销。这些算法是 Cormen、Leiserson和 Rivest的 Introduction to Algorithms 中的算法的改编。 |