黑马程序员技术交流社区

标题: list、set、map之间的区别 [打印本页]

作者: 想学跑的猪    时间: 2013-4-8 19:15
标题: list、set、map之间的区别
list、set、map之间有什么区别呢?在什么情况下会使用到这三个接口?

作者: 王大伟    时间: 2013-4-8 19:24
list接口是对collection的扩充,它允许存放相同的元素。常用的有2种实现类,ArrayList和LinkedList。ArraryList是一种以数组形式存放元素的集合,更适合于做查询,而LinkedList内部实现链表,适合做增删元素操作。
set接口同样是对collection的扩充,它不允许存放相同的元素。常用类HashSet和TreeSet.HashSet主要能够快速定位到一个元素,需要用到HashCode()方法,而TreeSet类中可以实现对元素的排序。

map集合,对象以键值对的形式存放在集合中,并且键它是不允许重复的。常用的实现是HashMap和TreeMap,HashMap能够快速的查询到一个键,而TreeMap则是对键按序存放的。
map中的keyset()返回此映射中包含的键的 Set 视图,entryset()返回此映射中包含的映射关系的 Set 视图。

作者: 刘胜寒    时间: 2013-4-8 19:28
我是被标题吸引过来的...我错了
作者: 王梦南    时间: 2013-4-8 19:34
本帖最后由 王梦南 于 2013-4-8 19:35 编辑

基本概念:
         Collection 是一个集合接口,是单列集合。
          它提供了对集合对象进行基本操作的通用接口方法。包括:添加、删除、判断、获取...
         它的常用接口有两个:List和Set。特别要注意的是:Map并不是Collection的子接口。
         
          List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。
          可以通过元素角标来获取对应的元素,允许重复。
          List的常用子类是ArrayList和 LinkedList。
          ArrayList是基于数组结构的集合,查询数据很快,但增删数据稍慢,线程不同步。
          LinkedList是基于链表结构的集合,增删数据很快,但是查询数据稍慢,线程不同步。
         (ArrayList替代了与其相似,但是线程同步的Vector。)
         
          Set是无序的Collection(存入和取出的顺序不一定一致),无法通过角标获取元素, 其中的元素不可以重复。
          Set功能和 Collection是一致的。
          Set的常用子类是HashSet和 TreeSet。
         HashSet通过equals和hashCode保证元素的唯一性。
          TreeSet通过实现Comparable重写compareTo方法或实现Comparator重写compare方法来保证元素的唯一性,以二叉树形式存放元素。
         
         Map与Collection在集合框架中属并列存在,是双列集合,存储的是键值对。
          Map存储元素使用put方法,Collection使用add方法。
          Map集合没有直接取出全部元素的方法,而是先转成Set集合,再通过迭代获取元素。
          Map集合中键要保证唯一性,取单个元素的值需要使用get方法传入键。
          Map的常用子类有HashMap和TreeMap。
          HashMap底层是哈希表数据结构,线程不同步。         
          TreeMap底层是二叉树数据结构,线程不同步。对键进行排序,排序原理与TreeSet相同。
         (HashTable被线程不同步,且允许使用存放null键、null值的HashMap所取代);
用法:List是有序的,比如添加新闻信息等按照插入顺寻读取数据,一般而言都是使用ArrayList因为查询方便,linkedlist用于数据库连接池等。
         Set用于放置无序元素。对于楼主刚刚接触而言,用处并不如ArrayList常用,基本用在ssh实体类关联映射中。
        Map也是比较常用的,一般使用的都是HashMap,存键值对。比如存放北京的编号是1,查询的时候只要查找1,就能够得到北京。一般而言,键是String类型,而值大多使用的是实体类。
作者: lyg2013    时间: 2013-4-8 20:21
大的分类:
1.Collection:一组各自独立的元素,即其内的每个位置仅持有一个元素。
List:以元素安插的次序来放置元素,不会重新排列。
Set:不接爱重复元素,它会使用自己内部的一个排列机制
2.Map:一群成对的key-value对象,即所持有的是key-value pairs。
  Map中不能有重复的key,它拥有自己的内部排列机制
http://www.360doc.com/content/12/0916/13/820209_236388492.shtml

作者: 王溢君    时间: 2013-4-8 20:51
王梦南 发表于 2013-4-8 19:34
基本概念:
         Collection 是一个集合接口,是单列集合。
          它提供了对集合对象进行基本操作 ...

这个太详细了,人才。




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