黑马程序员技术交流社区
标题:
请叫关于集合的。。。
[打印本页]
作者:
mf152
时间:
2013-9-6 15:34
标题:
请叫关于集合的。。。
本帖最后由 杨增坤 于 2013-9-9 19:44 编辑
请问set map 以及 list 之间的区别,最好有代码
作者:
赵凯
时间:
2013-9-6 15:46
|--ArrayList
|-- 数组结构,查询快,增删慢 --有序 可以重复
|--LinkedList
|-- 链表结构,查询慢,增删块 ,堆栈 --有序,可以重复
| --HashSet
|-- 哈希表结构,不重复元素 --无序,不重复
|--TreeSet
|-- 二叉树,存储的元素自然排序 --不重复
|--HashMap
|-- 哈希表结构,双列集合,不重复元素 --无序
|--TreeMap
|-- 红黑树结构,双列集合,存储的元素自然排序 --无重复
什么时候用集合
数据太多,用数组存储
对象太多,用集合存储
如果是这些对象经常频繁进行查找工作 ArrayList
如果是这些对象经常频繁进行修改工作 LinkedList
存储集合中的对象需要唯一吗,如果需要 HashSet
存储集合中的对象需要唯一吗,需要排序吗 如果需要 TreeSet
如果需要同时存储两个对象,一个键,一个值,必须Map集合
实在不知道该用哪一个集合 ArrayList(使用频率最高)
能用Map不要用Set ,Set底层调用的就是Map中的功能
作者:
.....淡定
时间:
2013-9-6 15:46
List特点:元素有放入顺序,元素可重复
Map特点:元素按键值对存储,无放入顺序
Set特点:元素无放入顺序,元素不可重复
作者:
李锡碧
时间:
2013-9-6 17:25
Set 无序,不可重复
List 有序,可重复
Map 键值对
Queuq 1.5新加 队列集合
作者:
杨增坤
时间:
2013-9-6 18:06
楼主你好!如果您的问题已经解决了,
请您把问题的
未解决
更改为
已解决
!
谢谢合作!
作者:
hmwudizl91zl
时间:
2013-9-8 08:20
List 以特定次序来持有元素,可有重复元素。
Set 无法拥有重复元素,内部排序。如果想放入重复元素,需重写HashCode和equals方法
Map 保存key-value值,value可多值。
作者:
杨彬
时间:
2013-9-9 14:02
集合:集合分为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
获取键和值
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2