黑马程序员技术交流社区

标题: List 和 Map 区别? [打印本页]

作者: 小小6456    时间: 2014-5-19 13:00
标题: List 和 Map 区别?
,。。。求解!学习

作者: 莫问纷飞    时间: 2014-5-19 13:10
List
1,是有序的,存入的顺序和取出的顺序一致。
2,元素是有索引的。
3,元素可以重复。
Vector:数组结构的,是同步的。被ArrayList替代,因为效率低。
ArrayList:数据结构是数组结构,是不同步的。查询速度很快。
LinkedList:数据结构是链表结构,是不同步的。增删速度很快。

Map集合中存储的是一对儿元素。键和值。之间存在着对应关系。
必须要保证键的唯一性。
如果存储键相同,值会覆盖。
只有list集合才具备增删改查。
最早的单列集合是Vector,双列集合是Hashtable
Hashtable:数据结构是哈希表,是同步的,不允许键和值为null
HashMap:数据结构是哈希表,是不同步的,运行键和值为null
TreeMap:数据结构是二叉树,是不同步的,可以对集合中的键进行排序。
作者: 彭飞    时间: 2014-5-19 14:00

楼主的提问,更准确的说,应该是Collection 和Map  区别吧
因为他们俩才在同一层次
list 和set 是Collection的小弟


Collection是单列集合,Map 是双列集合。

就是说,需要存储的元素对象是一个一个滴,就用Collection,
            而对象是成对成对具有映射关系的时候,就用Map。

而collextion 下的list 和set    前者具备有序而可重复且不同步的特性,后者是无序不可重复且同步的

用原题来说,他们很好区分,就是单列集合和双列集合的区分。
作者: 路漫漫_求索    时间: 2014-5-19 17:20
我将它们总结了下,看完下面,它们的区别你就能一目了然了~~~

* List可以存放重复元素,元素是有序的
*         |--ArrayList底层数据结构是数组,查询快,增删慢。线程不同步,效率高。
*                 |--Iterator排序方法
*                 |--ListIterator特有迭代器。
*         特有方法(指定位置add添加、set修改,还能判断前面是否还有元素hasPrevious)
*         原因:ArrayList是数组结构,具有角标,所以可以索取指定角标进行添加修改
*      |--add();
*      |--set(int, String);指定位置元素,要修改的元素
*      |--remove();
*      |--subList(int star,int end); 获取集合中 指定star-end之间的对象
*      |--indexOf();要查找的对象

Map集合常用类(存储的是键值对)注意了:当发现有映射关系时,可以选择map集合。
*                 |--put();存储元素的方法
*                 第一种取值方式:
*                 |--keySet();取出元素的方法(要先转成set集合,通过Iterator方法获取)
*                                 Set<Integer> keySet = map.keySet();
*                 第二种取值方式:
*                 |--entrySet: 返回的是Set<Map.Entry<K,V>>
*                                                    将集合中的映射关系(映射关系相当于丈夫和妻子的结婚证)
*                                            存入到了Set集合中,而这个关系的数据类型就是Map.Entry
*                 |--get(02);通过键获取值
*                 |--remove(02);通过键移除元素
*                 |--containsValue("zhangsan03");通过键判断是否存在
*                 |--containsKey();通过值判断是否存在
*
*                 |--Collection<String> coll = map.values();使用collection接收Map集合中所有的值。
作者: alax    时间: 2014-5-20 03:36
Map没有继承Collection接口

list继承Collection接口
List特点:元素有放入顺序,元素可重复
Map特点List接口有三个实现类:LinkedList,ArrayList,Vector
LinkedList:底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的地址。链表增删快,查找慢
ArrayList和Vector的区别:ArrayList是非线程安全的,效率高;Vector是基于线程安全的,效率低 :元素按键值对存储,无放入顺序
Map接口有三个实现类:HashMap,HashTable,LinkeHashMap
  HashMap非线程安全,高效,支持null;HashTable线程安全,低效,不支持null
SortedMap有一个实现类:TreeMap
其实最主要的是,list是用来处理序列的
map存储的是键值对




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