map: 使用key-value方式存储,如,HashTable
set: 持有的数据项不存在顺序关系,因此,不能有重复的数据项
List: 与set区别,有顺序

解决方案 »

  1.   

    map是一个映射,有:hashtable,hashmap等,其中hashtable是老版本中的,key值不可以是空,hashmap的key值可以是空。key值必须实现了equals方法。
    set是一个集合,无序的。就象一个袋子,扔进去就可以了
    list应该是一个有序的表,比如:ArrayList,Vector等。vector是唯一一个支持同步的集合类。arraylist类似vector,但不支持同步。另外还有很多,就不一一叙述了。比如堆栈也是继承了vector,但是是实现了后进先出。
      

  2.   

    楼上的,讲的不错,但
    -----------------
    比如堆栈也是继承了vector,但是是实现了后进先出。
    -----------------
    这句没搞懂啊!
      

  3.   

    Stack类确实是继承自Vector
    只是这个实现似乎有点问题,个人认为用修饰而非继承会更合适一些,用继承就把若干Stack不该有的方法也暴露为public了,如果不注意用了可能会出现一些诡异的场面 ^_^
    1.0版的类就是信不过,呵呵。也不是只有vector支持同步
    Collections类有三个内部类分别实现了List,Set,Map,可以通过synchronizedXXX()一系列方法使用,实现方式是典型的修饰不继承。
      

  4.   

    就是你去看stack的源码会发现它里面用的是vector来实现的楼主可以去看看thinking in java里关于collection里的一章
      

  5.   

    不是“里面用的是vector来实现的”的问题
    看API的javadoc,它会告诉你是继承了Vector
    个人认为这是一个有问题的实现,换成有一个List变量、4个访问方法同步,会比较好一点。
      

  6.   

    set和list实现了collection接口,map没有list可以不唯一
      

  7.   

    eureka0891() 说的对,thinking in java里讲的很好的,“第九章 持有你的对象”
      

  8.   

    楼上几个讲了,但是有误首先三个都是接口Map 映射表, 一个key只能对应一个value(它的反命题,一个value只对应一个key不成立)
    最常用的有:
    Map
     L--- HashMap (key可以null)
     L--- HashTable (key不能为null)
           L---Properties (适合读取.properties格式的文件)
     L--- SortedMap(interface根据Key排序)
           L---TreeMap(用二叉树实现key排序)List 和 Set 都是线性的,主要区别是List里面存放的内容可以重复,而Set同一对象只保留唯一的一个。因此,Map里面,提取Key集合的返回类型是Set,而提取Value集合的类型是Collection(List/Set)的父类型。常用的有
    List
     L---LinkedList(链表)
     L---ArrayList(动态数组,所有方法不同步)
     L---Vector(动态数组,所有方法同步)
          L---Stack(可以实现LIFO的栈)既然提到了Vector/Stack我认为Stack当初直接作为Vector的子类,而不是一个接口,应该算个败笔。
    因为所有的get(int)/set(int,Object)都暴露在外,破坏了Stack的LIFO规则。虽然在使用的时候可以注意,避免使用这些方法,但是总归是危险的漏洞