

下面是我本身畫的,關係畫得沒上面好,但我本身看着清楚些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
基於Array的List(Vector,ArrayList)適合查詢,而LinkedList(鏈表)適合添加,刪除操做
List基本上都是以Array爲基礎。可是Set則是在HashMap的基礎上來實現的,這個就是Set和List的根本區別
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中元素的排列順序是不固定的)