Java中List、Map是否都继承自Collection接口 ?
6个回答
展开全部
由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过低。
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过低。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Map 的特点是使用键值对的存储方式 使用存储时设置的键(key)读取 List 的Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
List 是继承Collection的
Map是来自Object的
Map是来自Object的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Map 的特点是使用键值对的存储方式 使用存储时设置的键(key)读取
List 的特点是像数组一样的存储方式 使用下标读取
session 也是使用键值对的存储方式,但是他多数应用在网站作用域中。
主要区别在于根据编程中对数据的存储需求来应用。
个人认为应该在平常的项目设计过程中比较会有更贴切的理解。我是这么过来的。
List 的特点是像数组一样的存储方式 使用下标读取
session 也是使用键值对的存储方式,但是他多数应用在网站作用域中。
主要区别在于根据编程中对数据的存储需求来应用。
个人认为应该在平常的项目设计过程中比较会有更贴切的理解。我是这么过来的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询