Java高级篇 -- List选择及优化
為什么80%的碼農都做不了架構師?>>> ??
在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提供的集合,不要自己書寫功能類似的方法 ?
轉載于:https://my.oschina.net/julycn/blog/331742
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Java高级篇 -- List选择及优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从数据库读写RadioButtonLis
- 下一篇: 一些提高工作效率的黑科技软件