List/Map/Set

1、List和Set 都是實現了Collection接口,List和Set區別主要在於,list可以添加重複值,實現除了Collection裏定義的一些方法(如get),list操作方便,可隨機取值,而set如果要取值只能調用iterator方法來遍歷值,速度比list要快;

list的實現類主要是ArrayList、LinkList、Vector(現在基本沒人用),ArrayList是數組實現的List,在查詢上比LinkedList快,LinkedList由於其本身的雙向鏈表結構就決定了其在刪除和添加上有了一定的優勢,知道這一點,在選擇的時候應該不難了。

list數據同步是個很大的問題,可以採用Collections.unmodifiableList(list)設成不可修改,或者list.iterator()方法來方法數據,這個時候在往List添加數據就能拋出異常;或者再設置這個屬性本身加一下限制;


2、Map採用的是鍵值對存儲方式,和之前的兩個基本沒什麼關聯,性能是Map最大一個問題,由於Map採用的是比較特殊hash算法,在查找的時候根據生成的這個hash code,可以在特定區域內進行查詢,相比ArrayList一個個的查找肯定是快多了。

Map的實現類主要有HashMap、TreeMap、HashTable,HashMap是基於hash表實現,存儲數據時無序性的,線程是不安全的,HashMap是取代Hashtable實現的,但是Hashtable他的特點是線程安全的,TreeMap是保存的是有序數據,線程是不安全的,如果需要線程安全的TreeMap,可以在聲明的時候加上Collections.synchronizedMap(new TreeMap());
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章