A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 疯狂程序 于 2013-3-24 20:21 编辑

List, Set, Map是否继承自Collection接口?为什么?

点评

可以多看看关于Collection的API文档  发表于 2013-3-24 07:48

4 个回复

倒序浏览
Collection:集合框架体系中的顶层接口, List和Set都是它的子接口
List:元素是有序的,元素可以重复。该体系特有操作角标的方法。
Set:元素是无序的,元素不可以重复。set底层使用的其实就是Map集合。
Map:也是集合框架体系中的顶层接口;该集合存储的是键值对。该集合存储的是键值对,并且一对一对往里存。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
Collection体系:
        |--List
                元素有序(存入顺序和取出顺序一致),元素可以重复
                     |--ArrayList
                              底层数据结构是数组,查询快,增删慢。
                       线程不安全,效率高。
                     |--Vector
                              底层数据结构是数组,查询快,增删慢。
                       线程安全,效率低。
                     |--LinkedList
                              底层数据结构是链表,查询慢,增删快。
                       线程不安全,效率高。

        |--Set
                元素无序,元素要保证唯一
                |--HashSet
                        底层数据结构是哈希表。
                        如何保证元素的唯一性呢?
                                它依赖两个方法:hashCode()和equals()
                                首先判断哈希值是否相同:
                                        不同:就把元素添加到集合中。
                                        相同:继续进入equals方法比较
                                                返回true,说明元素重复,不存。
                                                返回false,就把元素添加到集合中。
                |--TreeSet
                        底层数据结构是二叉树。
                                可以让集合中的元素排序。
                        如何保证元素的唯一性的呢?
                                它是根据比较返回的值是0,说明元素是重复的,就不添加。
                        有两种实现方案:
                                A:让自定义对象具备比较性
                                        实现Comparable接口
                                B:让集合具备比较性
                                        实现Comparator接口
Map体系:(Map体系的数据结构对键有效,跟值无关)
        |--HashMap
                底层数据结构是哈希表。
                如何保证键的唯一性呢?
                依赖hashCode()和equals()方法
                线程不安全,效率高。允许null键和值。
        |--Hashtable
                底层数据结构是哈希表。
                如何保证键的唯一性呢?
                依赖hashCode()和equals()方法
                线程安全,效率低。不允许null键和值。
        |--TreeMap
                底层数据结构是二叉树。
                如何保证键的唯一性呢?
                两种方式:
                        自定义元素具备比较性
                        集合具备比较性
                线程不安全,效率高。允许null值,不允许null键。

所以List, Set是否继承自Collection接口,而Map不是,Map又是另一个集合体系。                       

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
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是知道的,存储的是键值对
set 一般无序不重复.map kv 结构 list 有序

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
这是我之前学习时记得笔记。很清晰,加上楼上的回复感觉很有收获。

BD}R2N3P7_006(5LGASS}[2.jpg (27.35 KB, 下载次数: 47)

BD}R2N3P7_006(5LGASS}[2.jpg

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马