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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 張帅 中级黑马   /  2013-9-22 08:10  /  1944 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1黑马币
本帖最后由 張帅 于 2013-9-22 18:46 编辑

Set集合下面有HashSet和TreeSet集合。
Map集合下面有Hashtable、HashMap和TreeMap。
它们下边的分支结构也都类似,而且分支结构的功能属性也都差不多,那么Set集合和Map集合有什么区别呢?

最佳答案

查看完整内容

Collection 是对象集合,包括两个子接口 List 和 Set 。 List中的元素是有序的(元素存入集合的顺序和取出的顺序一致),该集合体系有索引,元素可以重复。 Set中的元素是无序的(存入和取出顺序有可能不一致),元素不可以重复。 List本身是Collection接口的子接口,具备了Collection的所有方法。 List 的实现类包括ArrayList, LinkedList和Vector。 ArrayList类:底层的数据结构使用的是数组结构。线程不同步。特点:查询速度 ...

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

8 个回复

倒序浏览
Collection 是对象集合,包括两个子接口 List 和 Set 。

List中的元素是有序的(元素存入集合的顺序和取出的顺序一致),该集合体系有索引,元素可以重复。
Set中的元素是无序的(存入和取出顺序有可能不一致),元素不可以重复。

List本身是Collection接口的子接口,具备了Collection的所有方法。
List 的实现类包括ArrayList, LinkedList和Vector。
ArrayList类:底层的数据结构使用的是数组结构。线程不同步。特点:查询速度很快,增删稍慢。
LinkedList类:底层使用的是链表数据结构。线程不同步。特点:增删速度很快,查询稍慢。
Vector类:底层是数组数据结构。线程同步,导致速度慢,被ArrayList替代了。

Set接口中的方法和Collection中方法一致的。Set接口取出方式只有一种,迭代器。
Set实现类包括HashSet、LinkedHashSet和TreeSet。
HashSet:底层数据结构是哈希表。是线程不同步,无序,高效。
HashSet集合保证元素唯一性:通过元素的hashCode方法,和equals方法完成的。
LinkedHashSet:有序,HashSet的子类。
TreeSet:底层数据结构是二叉树,从而保证元素唯一性的依据。可以对Set集合中的元素进行排序。
                                
Map 是键值对集合。存储的是一对元素,一个是键,一个是值,键与值之间有对应(映射)关系。
特点:要保证map集合中键的唯一性。
Map的集合子类包括:HashTable、HashMap、TreeMap。

HashTable:底层是哈希表数据结构,是线程同步的。不可以存储null键,null值,效率较低,JDK 1.0出现。
HashMap:底层是哈希表数据结构,是线程不同步的。可以存储null键,null值。效率较高,JDK 1.2出现,替代了HashTable。
TreeMap:底层是二叉树结构,是线程不同步的,可以对map集合中的键进行指定顺序的排序。

Map集合存储和Collection有着很大不同:
Collection一次存一个元素;Map一次存一对元素。
Collection是单列集合;Map是双列集合。

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

回复 使用道具 举报
Set集合接口继承Collection,存储一组唯一、无序对象。
Map集合接口存储一组成对的键-值对象,提供key到value的映射,Map的key值不要求有序,不允许重复;value不要求有序,但允许重复。


回复 使用道具 举报
set 和 map 最直观的区别就是,set存放的事单个的对象, map里面存储的是键值对的形式,这个键是不能重复的,而map也刚好有这个特性,set集合其实就是map集合中的key集。

点评

解答不错  发表于 2013-9-22 08:57
回复 使用道具 举报
Set:元素是无序的(存入和取出的数序不一定一致),元素不可以重复。
Map:存储的是键值对,一对一的往里存,而且要保证键的唯一性。
而对于Map子类对象的特点Set集合底层使用的就是Map集合。

回复 使用道具 举报
顶楼上,
回复 使用道具 举报
               
Set                                  不可重复, 没索引
                        HashSet                        使用哈希算法去重复, 效率高, 但元素无序
                        TreeSet                        使用二叉树算法排序, 可以指定元素的存储顺序
                        LinkedHashSet        HashSet的子类, 原理相同, 除了去重复之外还能保留存储顺序
Map                                         一次存两个对象, 键值对
                        HashMap                        使用哈希算法对键去重复, 效率高, 但无序
                        TreeMap                        使用二叉树算法排序, 可以自定义顺序
                        LinkedHashMap        使用哈希算法去重复, 并且保留存储顺序
                        Hashtable                类似HashMap, 线程安全, 效率略低, 不允许null键和null值
                        Properties                Hashtable的子类, 用来操作配置文件
回复 使用道具 举报
龙翔 初级黑马 2013-9-22 20:09:24
8#
Map<K,V>将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
Set<E>一个不包含重复元素的 collection。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马