Wednesday, April 20, 2011

[java] Java Collenction

Java中的collection包含了Set、List、Queue、SortedSet.....等種類。而Set當中又細分為HashSet、LinkedHashSet....等。Set與List最大的差異為1.set中的元素不可重複,而List裡的元素可以重複。2.List會給予每個加入的元素一個index。就以上的差異來比較存取速度的話,Set在"存"的時候速度較快,List在"取"的時候速度較快。

其中,HashSet的特性為:插入的元素會隨機排序;LinkedHashSet的特性為:會依元素插入的先後順序做排列

至於List的部份,工作中比較常用到的為ArrayList與LinkedList,兩者最大的差別在於ArrayList的元素是隨機排序,LinkedList會依照元素插入的順序做排列。也因為LinkedList會依照元素插入的順序做排列,如需常常存取List中的元素時,用LinkedList會得到較高的效率,但就隨機取得元素而言,ArrayList會有較高的效率。

舉個例子來說,有一串的字母與數字如右:4RFVGY74ESZ,字串存入HashSet中的排列可能會變成7YGVFR4ESZ,其中因為第二次出現的"4"有重複無法再放入HashSet之中。相同的字串若存入LinkedHashSet會變成4RFVGY7ESZ,也只會出現一個4。

相同的字串放進去ArrayList會變成怎樣呢?依據ArrayList的特性,有可能會變成SEZ4RGFVY74;若是存入LinkedList會得到4RFVGY74ESZ。

0 comments:

Post a Comment