Java中List、Map是否都继承自Collection接口 ?

如题所述

List继承或叫实现了Collection接口,而Map接口没有。
由于java接口可以多重实现,所以并不妨碍实现Map接口的子类同时也实现Collection接口。

==========
0分?加分加分,
温馨提示:内容为网友见解,仅供参考
第1个回答  2020-02-12
由collection接口派生的两个接口是list和set.map是继承map接口
list接口
  list是有序的collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在list中的位置,类似于数组下标)来访问list中的元素,这类似于java的数组。
和下面要提到的set不同,list允许有相同的元素。
  除了具有collection接口必备的iterator()方法外,list还提供一个listiterator()方法,返回一个listiterator接口,和标准的iterator接口相比,listiterator多了一些add()之类的方法,允许添加,删除,设定元素,还能向前或向后遍历。
  实现list接口的常用类有linkedlist,arraylist,vector和stack。
linkedlist类
  linkedlist实现了list接口,允许null元素。此外linkedlist提供额外的get,remove,insert方法在linkedlist的首部或尾部。这些操作使linkedlist可被用作堆栈(stack),队列(queue)或双向队列(deque)。
  注意linkedlist没有同步方法。如果多个线程同时访问一个list,则必须自己实现访问同步。一种解决方法是在创建list时构造一个同步的list:
    list
list
=
collections.synchronizedlist(new
linkedlist(...));
arraylist类
  arraylist实现了可变大小的数组。它允许所有元素,包括null。arraylist没有同步。
size,isempty,get,set方法运行时间为常数。但是add方法开销为分摊的常数,添加n个元素需要o(n)的时间。其他的方法运行时间为线性。
  每个arraylist实例都有一个容量(capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义。当需要插入大量元素时,在插入前可以调用ensurecapacity方法来增加arraylist的容量以提高插入效率。
  和linkedlist一样,arraylist也是非同步的(unsynchronized)。
map接口
 
 请注意,map没有继承collection接口,map提供key到value的映射。一个map中不能包含相同的key,每个key只能映射一个
value。map接口提供3种集合的视图,map的内容可以被当作一组key集合,一组value集合,或者一组key-value映射。
hashmap类
 
 hashmap和hashtable类似,不同之处在于hashmap是非同步的,并且允许null,即null
value和null
key。,但是将hashmap视为collection时(values()方法可返回collection),其迭代子操作时间开销和hashmap
的容量成比例。因此,如果迭代操作的性能相当重要的话,不要将hashmap的初始化容量设得过高,或者load
factor过低。
第2个回答  2011-05-21
Map 的特点是使用键值对的存储方式 使用存储时设置的键(key)读取 List 的Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自
第3个回答  2011-05-22
List 是继承Collection的
Map是来自Object的
第4个回答  2011-05-26
Map 的特点是使用键值对的存储方式 使用存储时设置的键(key)读取
List 的特点是像数组一样的存储方式 使用下标读取
session 也是使用键值对的存储方式,但是他多数应用在网站作用域中。
主要区别在于根据编程中对数据的存储需求来应用。
个人认为应该在平常的项目设计过程中比较会有更贴切的理解。我是这么过来的。
相似回答