1. 程式人生 > >Android成長實戰系列文章之Java技術深究之Android中集合的使用法則

Android成長實戰系列文章之Java技術深究之Android中集合的使用法則

Android中集合的使用法則

本篇文章屬於Android成長實戰之Android中深究的Java技術系列文章,在平常的開發中,我們使用Java集合使用的非常頻繁,因為一旦使用集合就涉及到記憶體,它的操作特性等,所以作為Android開發者,我們必須對Java集合非常瞭解,才能在專案用使用Java集合使用到最佳,閒話不多說,咱們進入正題。

1.Java中的集合分類以及底層資料結構

  Java中的集合大致可以分為3類,它們就是List(有序可重複),Set(無序不可重複),Map(鍵值對,鍵是Set集合),下面作一一介紹:

1.1 List集合&底層資料結構

  首先List集合的特性就是有序可重複,有序性是指List集合的元素順序跟你放入的順序是一致的,而可重複就是它可以放入重複相同的元素。它有三個子類,分別是:

  • ArrayList(底層資料結構是陣列,查詢訪問速度快,但是新增刪除速度差)
  • LinkedList(底層資料結構是單鏈表,查詢訪問速度慢,但是新增刪除速度快)
  • Vector(基本上和ArrayList類似,但是它是基於執行緒安全的)

1.1.1 ArrayList

  由於ArrayList底層資料結構是陣列,學過資料結構的同學應該知道,陣列在記憶體當中是連續的,因此它的查詢訪問速度是非常可觀的,但是新增和刪除那就比較差了,為什麼呢?有兩方面原因,一方面是由於陣列在中間新增刪除元素的時候,其它的成員元素都要進行移動,這就是一筆時間開銷啊,當然,如果在頭尾刪除新增是沒有影響的,第二方面就是我們知道陣列在Java中是固定大小的,而ArrayList可以動態新增元素是為什麼呢?原因就是ArrayList的擴容機制,實際上當元素達到當前的最大限度時,你往他裡面再新增元素,ArrayList就會進行擴容,擴容實際上就是生成一個新的容量陣列,容量比之前的大一些,等下一次再新增到最大限度,又會進行擴容,擴容的時候又是一筆時間開銷,因此ArrayList並不適合常常進行刪減操作,文字描述會比較累,那麼筆者畫圖給你看吧:

ArrayList的新增與刪除

1.1.2 LinkedList

待筆者有時間總結