Java-集合类汇总

结构图:  
  
Collection  
├List  
│├LinkedList  
│├ArrayList  
│└Vector  
│ └Stack  
└Set  
Map  
├Hashtable  
├HashMap  
└WeakHashMap 
----------------------------------------------------------------------  
Collection接口  
          Collection是最基本的集合接口,一个Collection代表一组Object,  
         即Collection 的元素(Elements)。一些Collection允许相同的元素  
         而另一些不行。一些能排序而另一些不行。  
  
         
Map接口  
            请注意,Map没有继承Collection接口,Map提供key到value的映射。  
          一个Map中不能包含相同的key,每个 key只能映射一个value。  
    Map接口提供3种集合的视图,Map的内容可以被当作一组key集合,  
          一组value集合,或者一组key-value 映射。  
------------------------------------------------  
  
list接口和set接口区别:  
   list允许有相同元素,而set不允许  
Vector与ArrayList区别:  
   Vector非常类似ArrayList,但是Vector是同步的。  
         由Vector创建的Iterator,虽然和 ArrayList创建的Iterator是同一接口,但是,因为Vector是同步的,  
         当一个Iterator被创建而且正在被使用,另一个线程改变了 Vector的状态(例如,添加或删除了一些元素),  
         这时调用Iterator的方法时将抛出 ConcurrentModificationException,因此必须捕获该异常。  
Stack 类:  
  Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆栈使用。  
          基本的push和pop方法,还有peek方法得到栈顶的元素,empty方法测试堆栈是否为空,search方法检测一个元素在堆栈中的位置。  
    Stack刚创建后是空栈。  
------------------------------------------------  
总结  
  如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList。  
  如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。  
  要特别注意对哈希表的操作,作为key的对象要正确复写equals和hashCode方法。  
  尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。这就是针对抽象编程。   

 

posted @ 2015-05-17 22:12  243573295  阅读(191)  评论(0编辑  收藏  举报