映射:
  HashTable: 实现一个映象,所有的键必须非空。为了能高效的工作,定义键的类必须实现hashcode()方法和equal()方法。这个类是前面java实现的一个继承,并且通常能在实现映象的其他类中更好的使用。
  HashMap: 实现一个映象,允许存储空对象,而且允许键是空(由于键必须是的,当然只能有一个)。
  WeakHashMap: 实现这样一个映象:通常如果一个键对一个对象而言不再被引用,键/对象对将被舍弃。这与HashMap形成对照,映象中的键维持键/对象对的生命周期,尽管使用映象的程序不再有对键的引用,并且因此不能检索对象。
  TreeMap: 实现这样一个映象,对象是按键升序排列的。
  Set和List都是由公共接口Collection扩展而来,所以它们都可以使用一个类型为Collection的变量来引用。这意味着任何列表或集构成的集合都可以用这种方式引用,只有映射类除外(但也不是完全排除在外,因为可以从映射获得一个列表。)所以说,把一个列表或集传递给方法的标准途径是使用Collection类型的参数。
  如何记住每一个容器的结构和所属体系呢?
  我的总结:
  List包括:
  ArrayList
  LinkedList
  set包括:
  hashSet
  TreaSet
  后缀名是该集合所属的体系。
  前缀名是该集合的数据结构。
  看到Array:要想到数组,要想到查询快,有角标
  看到link:要想到聊表,要想到删除快,要要想到add get remove + frist last的方法。
  看到hash:要想到哈希表,要想到性,要想到元素需要覆盖hascode方法和equals方法。
  看到tree:要想到二叉树,要想到排序,要想到两个接口Comparable,comparator,
  而且通常这些常用的集合容器都是不同步的。
  比如Vector 还是ArrayList,哪一个更好,为什么?
  要回答这个问题不能一概而论,有时候使用Vector比较好;有时是ArrayList,有时候这两个都不是好的选择。你别指望能够获得一个简单肯定答案,因为这要看你用它们干什么。下面有4个要考虑的因素:
  (1)API
  (2)同步处理
  (3)数据增长性
  (4)使用模式
  我们要理解,比如,LinkList集合类在增加或移除集合中任何位置的元素所花费的时间都是一样的—O(1),但它在索引一个元素的使用却比较慢-O(i),其中i是索引的位置.使用ArrayList也很容易,因为你可以简单的使用索引来代替创建iterator对象的操作。LinkList也会为每个插入的元素创建对象,所以你要明白它也会带来额外的开销。
  我的总结:类集框架为我们提供了一个功能强大的设计方案,以完成编程过程中的面临的大多数任务。 不是一篇博客能讲完的,需要在实际中慢慢领会。