Java高級篇 -- List選擇及優化

在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提供的集合,不要本身書寫功能相似的方法
相關文章
相關標籤/搜索