为什么 Map 接口不继承 Collection 接口?
回答·18
最热
最新
- 继承毫无意义,map 不是集合,集合也不是 map,map 是键值对,不适合“一组对象”的规范。
- 你可能是 map 和集合的概念。map 是键值对,键(key)是唯一的,是索引,是通过这个唯一值来找到对应的信息。给你举个例子,银行卡号是唯一的,通过卡号能找到唯一对应的你的身份信息,银行存款等信息。一个人可以有多张银行卡,卡里的信息可以一样,但卡号不能一样。你的身份证号学号之类的都相当于 key。但集合就是一堆数据,可以重复,里面只是单独的一个个数据,彼此之间没有关系。就跟数组一样。
- 由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 是键值对,collection 接口是提供的数组
- map 存在映射 。
- MAP 是键值对,connection 是数组类型。
- 数据结构都不一样,去了解一下相关的数据结构吧。
- Map 是键值对,collection 接口是提供的数组
- collecttion 是对象相关的接口,map 是键值对,没有啥共性
- 键值对跟数组能混一块儿吗!