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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© mf152 中级黑马   /  2013-9-6 15:34  /  1247 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨增坤 于 2013-9-9 19:44 编辑

请问set  map  以及 list 之间的区别,最好有代码

评分

参与人数 1技术分 +1 收起 理由
薛鹏鹏 + 1

查看全部评分

6 个回复

正序浏览
集合:集合分为Collection 和Map两大类,collection接口下的子类有List和Set,Map接口下的子类有HashMap和TreeMap

List:List集合下的子类包括,ArrayList,LinkedList和vector,List集合允许重复的元素,ArrayList和Vector的底层数据结构都是数组,
ArrayList是异步的,而Vector是同步的,LinkedList的底层数据结构是链表结构,它对集合内元素的增删效率要比前两者高,因为ArrayList
和Vector在增删元素时会把后面的元素一次向前或向后移动,而LinkedList的链表结构使它在增删时,直接将指针指向了之后或之前的元素。

Set:Set集合下的子类包括,HashSet和TreeSet,Set集合不允许重复的元素出现,保证集合元素唯一性的方法是通过元素的hashCode方法和
equals方法来完成的,当元素的hashCode值相同时,判断equals方法是否相同,如果两者都相同则判断为相同元素,如果hashCode的值不同则直接
认定元素不相同进行储存,这样提高元素比较的速度,HashSet的底层数据结构是哈希表,        TreeSet的底层数据结构是二叉树算法,TreeSet集合内的
元素可以进行自然顺序的排序。TreeSet集合中元素的排序是按照自然顺序排序的,如果元素不具备比较性,可以让元素实现Comparable接口,重写
compareTo方法让元素自身具备比较性,或者自定义一个比较器实现Comparator接口重写compare方法,然后将比较器作为参数传递给set集合让集合
具备比较性即可

Map:Map是一个双列集合,以键值对的形式存储元素,其中键是唯一的,键值是映射关系。HashMap底层数据结构是哈希表,可以允许有null键值
TreeMap底层数据结构是二叉树算法,可以对数组中的元素按自然顺序排序。Map在添加元素时如果储存的键相同时原来的值将被新值替换。如果要获
取Map集合内所有的元素就需要转换为Set集合,因为Map集合下没有迭代器。Map集合转Set集合的方式有两种,一种是keySet方式将Map中的key存入
Set集合中,迭代Set集合获取在通过key获取value值,另一种是entrySet方式,将Map集合下的键值对封装为对象传入Entry中,调用getKey和getValue
获取键和值

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
List 以特定次序来持有元素,可有重复元素。
Set 无法拥有重复元素,内部排序。如果想放入重复元素,需重写HashCode和equals方法
Map 保存key-value值,value可多值。

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
楼主你好!如果您的问题已经解决了,

请您把问题的未解决更改为已解决

谢谢合作!


回复 使用道具 举报
Set 无序,不可重复
List 有序,可重复
Map 键值对
Queuq  1.5新加 队列集合

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
List特点:元素有放入顺序,元素可重复
Map特点:元素按键值对存储,无放入顺序
Set特点:元素无放入顺序,元素不可重复

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
|--ArrayList
     |-- 数组结构,查询快,增删慢     --有序 可以重复
   |--LinkedList
     |-- 链表结构,查询慢,增删块   ,堆栈      --有序,可以重复
   | --HashSet
     |-- 哈希表结构,不重复元素            --无序,不重复
   |--TreeSet
     |-- 二叉树,存储的元素自然排序  --不重复
   |--HashMap
     |-- 哈希表结构,双列集合,不重复元素  --无序
   |--TreeMap
     |-- 红黑树结构,双列集合,存储的元素自然排序 --无重复

  什么时候用集合
    数据太多,用数组存储
    对象太多,用集合存储
  
  如果是这些对象经常频繁进行查找工作 ArrayList
  如果是这些对象经常频繁进行修改工作 LinkedList

  存储集合中的对象需要唯一吗,如果需要 HashSet
  存储集合中的对象需要唯一吗,需要排序吗 如果需要 TreeSet

  如果需要同时存储两个对象,一个键,一个值,必须Map集合

  实在不知道该用哪一个集合 ArrayList(使用频率最高)
  能用Map不要用Set ,Set底层调用的就是Map中的功能

评分

参与人数 1技术分 +1 收起 理由
薛鹏鹏 + 1

查看全部评分

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