List,Set,Map 是否继承自 Collection 接口?
答:List,Set 是,Map 不是。Collection 是最基本的集合接口,一个 Collection
代表一组 Object,即 Collection 的元素。一些 Collection 允许相同的元素而另一
些不行。一些能排序而另一些不行。Java JDK 不能提供直接继承自 Collection 的
类,Java JDK 提供的类都是继承自 Collection 的"子接口",如:List 和 Set。
注意:Map 没有继承 Collection 接口,Map 提供 key 到 value 的映射。一个 Map
中不能包含相同 key,每个 key 只能映射一个 value。Map 接口提供 3 种集合的视
图,Map 的内容可以被当做一组 key 集合,一组 value 集合,或者一组 key-value
映射。
List 按对象进入的顺序保存对象,不做排序或编辑操作。Set 对每个对
象只接受一次,并使用自己内部的排序方法(通常,你只关心某个元素
是否属于 Set,而不关心它的顺序--否则应该使用 List)。Map 同样对每
个元素保存一份,但这是基于"键"的,Map 也有内置的排序,因而不
关心元素添加的顺序。如果添加元素的顺序对你很重要,应该使用
LinkedHashSet 或者 LinkedHashMap.
详细介绍:
List 特点:元素有放入顺序,元素可重复
Map 特点:元素按键值对存储,无放入顺序
Set 特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是
元素在 set 中的位置是有该元素的 HashCode 决定的,其位置其实是固定的)
List 接口有三个实现类:LinkedList,ArrayList,Vector%
LinkedList:底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地
址的同时还存储下一个元素的地址。链表增删快,查找慢
ArrayList 和 Vector 的区别:ArrayList 是非线程安全的,效率高;Vector 是基于
线程安全的,效率低
Set 接口有两个实现类:HashSet(底层由 HashMap 实现),LinkedHashSet%
SortedSet 接口有一个实现类:TreeSet(底层由平衡二叉树实现)
Query 接口有一个实现类:LinkList%
Map 接口有三个实现类:HashMap,HashTable,LinkeHashMap%
% HashMap 非线程安全,高效,支持 null;HashTable 线程安全,低效,不支持
null%
SortedMap 有一个实现类:TreeMap%
其实最主要的是,list 是用来处理序列的,而 set 是用来处理集的。Map 是知道的,
评论10