JAVA里幾種數據結構的優點和缺點


一般大家都知道ArrayList和LinkedList的大致區別:
1.ArrayList是實現了基於動態數組的數據結構,LinkedList基於鏈表的數據結構。
2.對於隨機訪問get和set,ArrayList覺得優於LinkedList,因為LinkedList要移動指針。
3.對於新增和刪除操作add和remove,LinedList比較占優勢,因為ArrayList要移動數據。
    這一點要看實際情況的。若只對單條數據插入或刪除,ArrayList的速度反而優於LinkedList。但若是批量隨機的插入刪除數據,LinkedList的速度大大優於ArrayList. 因為ArrayList每插入一條數據,要移動插入點及之后的所有數據。

4.查找操作indexOf,lastIndexOf,contains等,兩者差不多。
5.隨機查找指定節點的操作get,ArrayList速度要快於LinkedList.

Set是最簡單的一種集合。集合中的對象不按特定的方式排序,並且沒有重復對象。 Set接口主要實現了兩個實現類:

  • HashSet: HashSet類按照哈希算法來存取集合中的對象,存取速度比較快 
  • TreeSet :TreeSet類實現了SortedSet接口,能夠對集合中的對象進行排序。 

Set 的用法:存放的是對象的引用,沒有重復對象

List的特征是其元素以線性方式存儲,集合中可以存放重復對象。 

List接口主要實現類包括:
  • ArrayList() : 代表長度可以改變得數組。可以對元素進行隨機的訪問,向ArrayList()中插入與刪除元素的速度慢。 
  • LinkedList(): 在實現中采用鏈表數據結構。插入和刪除速度快,訪問速度慢。 
對於List的隨機訪問來說,就是只隨機來檢索位於特定位置的元素。 List 的 get(int index) 方法放回集合中由參數index指定的索引位置的對象,下標從“0” 開始。最基本的兩種檢索集合中的所有對象的方法: 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM