Java集合小結


下面是我本身畫的,關係畫得沒上面好,但我本身看着清楚些java



還有一張下載來的:


面試


有序否dom

容許元素重複否性能

Collectionspa

線程

code

Listorm

blog

排序

Set

AbstractSet

HashSet

TreeSet

是(用二叉樹排序)

Map

AbstractMap

使用key-value來映射和存儲數據,Key必須唯一,value能夠重複

HashMap




幾個面試常見問題:
1. Q:ArrayList和Vector有什麼區別?HashMap和HashTable有什麼區別?
   A:Vector和HashTable是線程同步的(synchronized)。性能上,ArrayList和HashMap分別比Vector和Hashtable要好。

2. Q:大體講解java集合的體系結構
   A:List、Set、Map是這個集合體系中最主要的三個接口。
      其中List和Set繼承自Collection接口。
      Set不容許元素重複。HashSet和TreeSet是兩個主要的實現類。
      List有序且容許元素重複。ArrayList、LinkedList和Vector是三個主要的實現類。
      Map也屬於集合系統,但和Collection接口不一樣。Map是key對value的映射集合,其中key列就是一個集合。key不能重複,可是value能夠重複。HashMap、TreeMap和Hashtable是三個主要的實現類。
      SortedSet和SortedMap接口對元素按指定規則排序,SortedMap是對key列進行排序。

3. Q:Comparable和Comparator區別
    A:調用java.util.Collections.sort(List list)方法來進行排序的時候,List內的Object都必須實現了Comparable接口。
        java.util.Collections.sort(List list,Comparator c),能夠臨時聲明一個Comparator 來實現排序。
        Collections.sort(imageList, new Comparator() {
            public int compare(Object a, Object b) {
                int orderA = Integer.parseInt( ( (Image) a).getSequence());
                int orderB = Integer.parseInt( ( (Image) b).getSequence());
                return orderA - orderB;
           }
        });
        若是須要改變排列順序
        改爲return orderb - orderA 便可。

4. Q:簡述equals()和hashCode()
    A:...不知道。下回分解

public interface
Collection
            extends Iterable


public interface
List
            extends Collection


public abstract class
AbstractList
            extends AbstractCollection
            implements List


public class
Vector
            extends AbstractList
            implements List,
                                   RandomAccess,
                                   java.lang.Cloneable,
                                   java.io.Serializable
基於Array
是「sychronized


public class
ArrayList
       
extends AbstractList
       
implements List,
                          RandomAccess,
                          Cloneable,
                          java.io.Serializable
基於Array
ArrayList非同步的。因此在性能上要比Vector優越一些


public class
LinkedList
        extends AbstractSequentialList
        implements List,
                          Queue,
                          Cloneable
,
                          java.io.Serializable
不基於Array

基於ArrayListVectorArrayList)適合查詢,而LinkedList(鏈表)適合添加,刪除操做




List基本上都是以Array爲基礎。可是Set則是在HashMap的基礎上來實現的,這個就是SetList的根本區別
public abstract class AbstractSet
    extends AbstractCollection
    implements Set



public class HashSet
    extends AbstractSet
    implements Set, Cloneable, java.io.Serializable
HashSet的存儲方式是把HashMap中的Key做爲Set的對應存儲項


public class LinkedHashSet
    extends HashSet
    implements Set, Cloneable, java.io.Serializable


public class TreeSet
    extends AbstractSet
    implements SortedSet, Cloneable, java.io.Serializable
它是經過SortedMap來實現的




public interface Map<K,V>


public abstract class AbstractMap<K,V>
    implements Map<K,V>


public class HashMap<K,V>
    extends AbstractMap<K,V>
    implements Map<K,V>, Cloneable, Serializable


public class TreeMap<K,V>
    extends AbstractMap<K,V>
    implements SortedMap<K,V>, Cloneable, java.io.Serializable
HashMap經過hashcode對其內容進行快速查找,而TreeMap中全部的元素都保持着某種固定的順序,若是你須要獲得一個有序的結果你就應該使用TreeMap(HashMap中元素的排列順序是不固定的)
相關文章
相關標籤/搜索