日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android开发之Java集合类性能分析

發(fā)布時(shí)間:2024/7/19 Android 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android开发之Java集合类性能分析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  對于Android開發(fā)者來說深入了解Java的集合類很有必要主要是從Collection和Map接口衍生出來的,目前主要提供了List、Set和 Map這三大類的集合,今天就他們的子類在標(biāo)準(zhǔn)情況和多線程下的性能做簡單的分析。

  Collection接口主要有兩種子類分別為List和Set,區(qū)別主要是List保存的對象可以重復(fù),而Set不可以重復(fù),而Map一般為key-value這樣的對應(yīng)關(guān)系,比如我們常用的HashMap。

  一、List 主要有ArrayList、LinkedList、Vector和Stack
  有關(guān)這些子類的性能,Android開發(fā)網(wǎng)從插入、刪除、移動(dòng)等方面按照元素的執(zhí)行效率做一一分析,通過分析Sun 的Java源碼和實(shí)際元素操作得出下面結(jié)論:
  ArrayList - 他的構(gòu)造主要從AbstractList實(shí)現(xiàn),主要是判斷下初始元素的容量,ArrayList最大的特點(diǎn)就是提供了Add、Get操作,當(dāng)然可以通過迭代器來遍歷,對于元素的存在可以通過contains方法判斷。
   LinkedList - 作為一種雙向鏈表結(jié)構(gòu),對于元素的插入、刪除效率比較高,只需要調(diào)整節(jié)點(diǎn)指向即可,但是對于隨機(jī)查找而言性能主要看這個(gè)鏈表長度和運(yùn)氣了。 LinkedList也提供了ArrayList的get方法,但是要復(fù)雜的多,主要通過next或previous方法遍歷得到。
  Vector - 比較簡單和ArrayList差不多,主要是內(nèi)部實(shí)現(xiàn)了synchronized關(guān)鍵字,實(shí)現(xiàn)了線程安全訪問但性能有些降低,同時(shí)對于元素的擴(kuò)充在算法上和ArrayList稍有不同,通過構(gòu)造的容量增量系數(shù)來決定。
  Stack - 作為棧的操作,本次繼承于Vector,提供了push,pop和peek方法,peek是不彈出根據(jù)數(shù)據(jù)大小獲取最后一個(gè)元素對象。

  二、Set 主要有HashSet 和 TreeSet
  HashSet - 該類是從Set接口繼承而來,相對于List而言就是說內(nèi)部添加的元素不能重復(fù),當(dāng)然從名字的Hash來看就是通過哈希算法來實(shí)現(xiàn)防止沖突來獲得防止重復(fù) 的,整體上從HashMap實(shí)現(xiàn),存放元素方法的也是類似key- value的對應(yīng)的,通過迭代器遍歷,不過HashSet不是線程安全的。
  TreeSet - 這個(gè)相對于HashSet而言主要是提供了排序支持,TreeSet是從TreeMap類實(shí)現(xiàn),也是非線程安全的。
  可以看到Set的兩個(gè)類都和Map有關(guān),下面就一起看下有關(guān)映射(Map)相關(guān)的使用。

  三、Map 主要有 HashMap 和 TreeMap
  HashMap - 提供了比較強(qiáng)大的功能實(shí)現(xiàn),比如說loadFactor可以控制元素增長時(shí)內(nèi)存分配,HashMap也是非線程安全的。
  TreeMap - 相對于HashMap它的排序可以通過傳入包含comparator的屬性來控制。

  四、單線程模式下性能測試 ,測試元素100~1000中平均成績:
  添加? HashMap效率最高,ArrayList最低,其他的效高的還有Stack、HashSet和Vector,較低的有LinkedList和TreeSet和TreeMap
  刪除 HashMap效率最高,LinkedList最低,其他的HashSet、TreeMap和TreeSet效率較高,較低的有Vector、ArrayList和Stack
  查找? HashMap效率最高,LinkedList最低,HashXXX和TreeXXX效率都比較高,而基于List類效率耗時(shí)是Map或Set的十倍左右。

  五、多線程模式下性能測試 ,測試元素100~1000,線程數(shù)10個(gè)中平均成績:
  添加 HashSet效率最高,LinkedList最低,HashXXX和TreeXXX效率都比較高,這里ArrayList效率較低,整體相差不大。
  刪除 HashSet效率最高,LinkedList最低,整體性能同添加相似,但HashXXX或TreeXXX性能比List系列高出3倍。
  查找 仍然是HashSet性能最好,LinkedList最低,性能較差的是ArrayList,其他的均表現(xiàn)很好。

轉(zhuǎn)載于:https://www.cnblogs.com/xgjblog/p/4119176.html

總結(jié)

以上是生活随笔為你收集整理的Android开发之Java集合类性能分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。