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的添加與刪除

  至於ArrayList的擴容機制,這不是本篇文章的研究範圍,請打開鏈接:https://blog.csdn.net/zymx14/article/details/78324464

1.1.2 LinkedList

待筆者有時間總結

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章