类层次关系如下:

Collection    一个Collection代表一组ObjectJava SDK不提供直接继承自Collection的类,
│        Java SDK提供的类都是继承自Collection的“子接口”(List和Set)
│ 
├List      List是有序的Collection,用户能够使用索引来访问List中的元素,这类似于Java的数组。
││
│├LinkedList    非同步;
││         LinkedList提供额外的get,remove,insert方法在 LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque
││
│├ArrayList     非同步
││         实现了可变大小的数组
││
│└Vector      非常类似ArrayList,但是Vector是同步的
│  │
│ └Stack      实现一个后进先出的堆栈

└Set      Set是一种不包含重复的元素的Collection       


Map       Map提供key到value的映射

├Hashtable     同步的
│          实现一个key-value映射的哈希表

├HashMap      非同步

└WeakHashMap    一种改进的HashMap,它对key实行“弱引用”,如果一个key不再被外部所引用,那么该key可以被GC回收

总结
  如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList。
  如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。
  要特别注意对哈希表的操作,作为key的对象要正确复写equals和hashCode方法。
  尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。这就是针对抽象编程

 

 

 

posted on 2013-03-28 10:55  你猜呢  阅读(111)  评论(0)    收藏  举报