Set:是一个接口,无序集合,不能包含重复元素。同时身为接口不能生成对象。但是类HashSet和TreeSet实现了该接口,所以通常使用的也是这两个。
HashSet:该集合中主要存放的一些无序元素。如果你只是想用一个‘罐子’盛东西,其他什么都不关心,可以选它。
TreeSet:该集合除了实现Set接口还实现了SortedSet接口。也就是说可以用它来进行一些排序默认升序。当然排序的元素必须具有可比性。也就是说对于基本类型如:Float,Integer,String,Character等
List:接口,允许出现重复元素。与Set另一个不同的地方就是元素有序。如果你对加进‘罐子’里东西很在乎先后。如谁先进去的谁后进去的,第几个是谁比较关心可以选用。但是同样。List是个接口我们通常使用的是两个实现了该接口的两个类arrayLis和LinkedList。
ArrayList:支持对元素的快速访问。但是对插入和删除支持性差。
LinkedList:对元素的插入和删除性能良好。由于List中元素有序,可以我们不用Iterator对象也可以访问,不过要先调用toArray()方法。才能像操作一个普通数组一样访问。
Collection 接口的接口 对象的集合
├ List 子接口 按进入先后有序保存 可重复
│├ LinkedList 接口实现类 链表 插入删除 没有同步 线程不安全
│├ ArrayList 接口实现类 数组 随机访问 没有同步 线程不安全
│└ Vector 接口实现类 数组 同步 线程安全
│ └ Stack
└ Set 子接口 仅接收一次,并做内部排序
├ HashSet
│ └ LinkedHashSet
└ TreeSet
Map 接口 键值对的集合
├ Hashtable 接口实现类 同步 线程安全
├ HashMap 接口实现类 没有同步 线程不安全
│├ LinkedHashMap
│└ WeakHashMap
├ TreeMap
└ IdentifyHashMap
Collection 是对象集合, Collection 有两个子接口 List 和 Set,List 可以通过下标 (1,2..) 来取得值,值可以重复,而 Set 只能通过游标来取值,并且值是不能重复的
ArrayList , Vector , LinkedList 是 List 的实现类
ArrayList 是线程不安全的, Vector 是线程安全的,这两个类底层都是由数组实现的
LinkedList 是线程不安全的,底层是由链表实现的
Map 是键值对集合
HashTable 和 HashMap 是 Map 的实现类
HashTable 是线程安全的,不能存储 null 值
HashMap 不是线程安全的,可以存储 null 值
http://blog.csdn.net/jackie03/article/details/7312481
http://blog.csdn.net/nishuihanliu/article/details/51291992