在java編程中,咱們經常使用到java自帶的集合類List
如下爲幾點簡單的優化建議:
1.Vector仍是ArrayList
Vector有其特有有點,其每一個方法都爲同步方法【synchronized】,因此是線程安全的,在多線程環境下,若多個進程同時訪問受保護資源,用Vector就顯得十分簡潔,安全。
ArrayList爲非線程安全的,若不是多線程環境,或多線程環境下資源不須要寫、更新,只須要讀取,使用,或資源不須要受保護,使用ArrayList就大大提升了效率。
線程安全的散列表將原本能夠並行處理的任務進行排隊,串行處理。
一樣:Hashtable是線程安全的,HashMap是非線程安全的
2.設置ArrayList初始化容量
ArrayList不斷增加過程當中會自動擴增其空間,這無疑耗費必定的資源,時間。
若是已經預料到ArrayList將是一個很大的數組,而且你預料到它將變得異常龐大,可預先設置數組的大小,能夠提升添加新元素的速度,並優化性能。
原來ArrayList list=new ArrayList();
如今ArrayList list=new ArrayList();
list.ensureCapacity(N);
3.ArrayList與LinkedList
兩者功能至關,但內部實現的數據結構不一樣
ArrayList經過object[]實現,LinkedList經過鏈表。
由此易得:
ArrayList:隨機訪問,順序添加效率均高於LinkedList,只要用於變更較小的集合存儲
對其添加、刪除某位置元素,將移動全部後方元素,效率過低
LinkedList:在某個位置增刪效率較高,用於變更較爲頻繁的集合存儲
4.遍歷
若List不發生大小變更【循環中無remove,add操做】,即不用每次檢測其大小
原來:
for (int i = 0; i < vector.size (); i++)
改成:
for (int i = 0,n=list.size (); i < n; i++)
不用每次循環都檢測其大小,效率將大大提升
5.使用 除非十分必要,不然儘可能使用java提供的集合,不要本身書寫功能相似的方法