黑马程序员技术交流社区

标题: List、Map、Set三个接口,存取元素时,各有什么特点? [打印本页]

作者: 许夏荣    时间: 2015-3-23 13:54
标题: List、Map、Set三个接口,存取元素时,各有什么特点?
List,Map,Set区别和特点在哪?
作者: 奋斗的黑马    时间: 2015-3-23 15:30
List特点:元素有放入顺序,元素可重复
Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)
Map特点:元素按键值对存储,无放入顺序 (应该知道什么是键值对吧!)
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 有序


作者: 奋斗的黑马    时间: 2015-3-23 18:24
奋斗的黑马 发表于 2015-3-23 15:30
List特点:元素有放入顺序,元素可重复
Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺 ...

真是灰常感谢版主。。。。我会继续努力的!!顺便加下好友吧,,你也是正在努力进黑马吗?
作者: 田晓莉    时间: 2015-3-23 20:09
自己的一点小认识,一起学习,认识不对的地方,多多指教~~~
1,为什么要学集合类,即Collection,Map?面向对象的语言主要是对对象进行操作,集合是存储对象的一种最常见方式;
2,集合与数组:数组也是用来存储操作对象,但,数组长度固定,不可变;数组只能存储基本数据类型,例如int,String等;集合长度可变,且一个集合可存储不同类型的对象(个人觉得这点很厉害);
3,集合分类:根据每种容器(集合)对数据的存储方式(数据结构)不同。collection---(List,Set),
List----(ArrayList(底层是数组数据结构),linkedList(底层是链表数据结构),Vector(底层数据结构是数组))
Set----(HashSet(底层数据结构是哈希表),TreeSet(底层数据结构是二叉树));4,List:元素有序(可索引,所以有很多和索引有关的方法),元素可重复;Set:元素无序(存入和取出的顺序不一定一致)且不允许重复;其中,HashSet能保证元素唯一性(利用HashCode方法和equals方法);TreeSet可以对集合中元素进行排序(自然顺序)
5,Map相当于和Collection一个级别的;Map<K,V>该集合存储键值对,且要求保持键的唯一性;
Map----(HashMap,Hashtable,TreeMap)。

其中,HashMap:底层是哈希表数据结构,不可以存null键、null值,且线程同步
HashMap:底层数据结构是哈希表,允许使用null键和值,其余于HashMap的用法相同,且线程不同步;
TreeMap:底层是数据机构是二叉树,可以用于给map中的键排序,且线程不同步。
最后,不同集合有自己特有的方法,这个需要多练才记得住~~~回帖,自己也正好总结下,嘿嘿

作者: 田晓莉    时间: 2015-3-23 23:11
田晓莉 发表于 2015-3-23 20:09
自己的一点小认识,一起学习,认识不对的地方,多多指教~~~
1,为什么要学集合类,即Collection,Map?面向 ...

sorry啊,是的写错了,是Hashmap,底层数据结构是哈希表,允许使用null值和null键,线程不同步;
Hashtable,底层数据结构是哈希表,不允许使用null键和null值,线程同步。
写错了~~~及时改正,谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2