Java:選擇正確的集合

這是在應用程序中選擇Set , List或Map的正確實現的快速指南。

最好的通用或“主要”實現可能是ArrayList,LinkedHashMap和LinkedHashSet。 它們的整體性能更好,除非您需要其他實現提供的特殊功能,否則應使用它們。 該特殊功能通常是排序或排序。

在這里,“排序”是指迭代器返回的項目的順序,“排序”是指根據Comparable或Comparator對項目進行排序。

接口 有重復嗎? 實作 歷史的
沒有 哈希集 LinkedHashSet * 樹集
清單 ArrayList * 鏈表 向量 , 堆棧
地圖 沒有重復的鍵 哈希圖 LinkedHashMap * 樹狀圖 哈希表 , 屬性

非主要實現的主要特征:

  • HashMap的性能比LinkedHashMap略好
  • HashSet的性能比LinkedHashSet略好
  • TreeSet已排序和排序,但速度較慢
  • TreeMap已排序和排序,但速度較慢
  • LinkedList可以快速添加到列表的開頭,并且可以通過迭代從內部快速刪除

以上實現的迭代順序:

  • HashSet – 未定義
  • HashMap – 未定義
  • LinkedHashSet –插入順序
  • LinkedHashMap –鍵的插入順序(默認情況下)或“訪問順序”
  • ArrayList –插入順序
  • LinkedList –插入順序
  • TreeSet –按可比/比較器的升序
  • TreeMap –根據可比/比較器,鍵的升序

對于LinkedHashSet和LinkedHashMap,項目的重新插入不會影響插入順序。

在地圖或集合中使用時,這些項目不得更改狀態(因此,建議這些項目是不可變的對象):

  • 地圖鍵
  • 套裝中的物品

排序要求:

  • 存儲的項目實現可比性
  • 定義存儲對象的比較器

要保留ORDER BY子句中指定的ResultSet的順序,請將記錄插入到List或LinkedHashMap中。

參考:在Architect's Diary博客上,從我們的JCG合作伙伴 Sanjeev Kumar 選擇合適的收藏 。


翻譯自: https://www.javacodegeeks.com/2012/09/java-choosing-right-collection.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371333.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371333.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371333.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java多線程——不變性與安全發布

1、不變性 某個對象在被創建后其狀態就不能被修改,那么這個對象就稱為不可變對象,不可變對象一定是線程安全的。不可變對象很簡單。他們只有一種狀態,并且該狀態由構造函數來控制。 當滿足以下條件時,對象才是不可變的&#xff1a…

中tr不能顯示字符_垃圾文本識別中基本操作指南和錯誤總結,第三部分

創建模型需要用到機器學習的庫,所以我們先下載sklearn庫sklearn庫下載完成后再輸入庫文件,就可以完美運行。然后就是劃分測試集和訓練集,需要注意的是,在從數據處理函數中導入數據時,足足運行了有將近30多秒&#xff0…

mvc后臺post發送json數據

代碼比較簡單&#xff0c;不廢話&#xff0c;直接上代碼&#xff1a; /// <summary>/// 提交json數據&#xff0c;并接收/// </summary>/// <param name"apipath">要請求的服務器地址</param>/// <param name"jsonStr">要提…

(轉載)20分鐘讀懂程序集

轉自&#xff1a;http://www.cnblogs.com/damonlan/p/3221347.html 說到程序集&#xff0c;我剛開始對這個名詞特別的郁悶&#xff01;~。然后 前些天花了些時間 好好讀了一下&#xff0c;現在比較清晰了&#xff0c;把一些書上看到的 記下來&#xff0c;以饗讀者。希望沒浪費你…

大數據胸_喂母乳會導致胸下垂?!你被這個謠言騙了多少年?

很多人認為&#xff0c;給寶寶喂奶會導致胸下垂。有些愛美的媽媽&#xff0c;甚至在寶寶出生6個月后就著急斷奶。那么&#xff0c;喂奶真的會導致胸下垂么&#xff1f;給大家講兩個真實的調查結果哈~2004年的一次針對496名新媽媽的調查結果顯示&#xff0c;有75%的母乳喂養母親…

Spring Shell項目發布

Spring Source昨天發布了Spring Shell 。 Spring Shell是一個交互式Shell&#xff0c;可以使用基于Spring的編程模型輕松地通過命令進行擴展。 它是通過除去OSGi依賴項從Spring Roo項目中提取的&#xff0c;并變成了一個獨立項目。 這使得那些只希望使用交互式外殼功能的人更容…

自制ACL+DHCP實驗(初版)

&#xff08;實驗用gns模擬器&#xff09; ACL 實驗拓撲&#xff1a; 實驗要求&#xff1a; 1.1.1.1→3.3.3.3 不通 11.11.11.11→3.3.3.3 通 2.2.2.2→3.3.3.3 通 實驗步驟&#xff1a; 步驟一&#xff1a;基本配置 R1&#xff1a; R1#conf t R1(config)#int lo0 R1(config-if…

pil 圖像最大值_第97天:圖像庫 PIL(二)

上節我們講了 Python 的圖像處理庫 PIL 的基本圖像處理功能&#xff0c;打開了 PIL 的神秘面紗。這節我們接著講 PIL 的 Image 模塊的常用方法。Image 模塊的方法convertImage.convert(modeNone, matrixNone, ditherNone, palette0, colors256)參數說明&#xff1a;mode&#x…

c#的委托用法delegate

轉載于:https://www.cnblogs.com/douzujun/p/6555886.html

yii2.0

yii是一個高性能的適用于開發web2.0應用的框架&#xff0c;它自帶豐富的功能&#xff0c;包括mvc&#xff0c;dao/aciverecord&#xff0c;緩存&#xff0c;身份驗證和基于角色的訪問控制&#xff0c;腳手架&#xff0c;測試等&#xff0c;可顯著縮短開發時間yii只加載你需要的…

Java中常見的代碼沖突

在工作中&#xff0c;最近我對現有Java項目進行了代碼清理。 完成該練習后&#xff0c;我可以看到在代碼中一次又一次地發生了一組常見的代碼沖突。 因此&#xff0c;我想出了此類常見違規的清單&#xff0c;并與同行分享&#xff0c;以使人們有意識地提高代碼質量和可維護性。…

np讀取csv文件_被 Pandas read_csv 坑了

-- 不怕前路坎坷&#xff0c;只怕從一開始就走錯了方向Pandas 是python的一個數據分析包&#xff0c;納入了大量庫和一些標準的數據模型&#xff0c;提供了高效地操作大型數據集所需的工具。Pandas 就是為解決數據分析任務生的&#xff0c;無論是數據分析還是機器學習項目數據預…

Python 第三方庫 cp27、cp35 等文件名的含義

What does version name ‘cp27’ or ‘cp35’ mean in Python? 如對于 gensim-0.12.4-cp27-none-win_amd64.whl文件名而言&#xff0c;將其文件名拆分的話&#xff0c;含義分別是&#xff1a; 0.12.4 - package version, they may be using semantic versioningcp27 - this p…

JAVA: 序列化

對象序列化 - 一個對象可以被表示為一個字節序列&#xff0c;保存對象的類型信息、對象的數據&#xff0c;還有對象中的數據類型&#xff0c;以便存儲或傳輸。 反序列化 - 將序列化對象寫入文件之后&#xff0c;可以從文件中讀取出來&#xff0c;并且對它進行反序列化&#xff…

尋找隨機的錯誤-一個真實的故事

幾周前&#xff0c;我完成了RapidFTR開源項目的錯誤查找 &#xff0c;這花了我三個晚上。 我認為可能值得分享狩獵的故事。 本文將介紹我的工作。 我將概述我的旅程&#xff0c;以實際找到正在發生的事情的根本原因。 我在本文中的目標是突出顯示可以使用的技術示例&#xff0c…

鈴木uy125摩托車機油_UY125 新瑞夢UM125發布 濟南鈴木于湖南株洲吹響國IV集結號...

?4月18日&#xff0c;濟南鈴木在湖南株洲天臺開元酒店舉行了2019年新品發布會&#xff0c;并于現場發布了兩款極具終端戰略意義的新款國IV車型&#xff0c;分別為定位“實用運動”的全新個性化踏板車型UY125&#xff0c;以及能夠進一步鞏固濟南鈴木在國IV入門級踏板車型領域絕…

473. 核電站問題

★ 輸入文件&#xff1a;nucle.in 輸出文件&#xff1a;nucle.out 簡單對比 時間限制&#xff1a;1 s 內存限制&#xff1a;128 MB 【問題描述】 一個核電站有 N 個放核物質的坑&#xff0c;坑排列在一條直線上。如果連續 M 個坑中放入核物質&#xff0c;則會發生爆炸&…

js判斷時間是早上還是下午_牛奶早上喝好,還是晚上喝好?沒想到“最佳時間”是這個點,顛覆了!...

都說喝牛奶好&#xff0c;要多喝。可什么時間喝牛奶最好呢&#xff1f;是飯前、飯后還是睡前&#xff1f;又或者喝酒前&#xff1f;確實得好好說說。傳言&#xff1a;空腹時身體比較缺能量&#xff0c;牛奶里的蛋白會去提供能量&#xff0c;不會去構成和修復組織(比如修復皮膚)…

Java模因拒絕死亡

也有標題&#xff1b; 我的寵物討厭Java編碼。 有許多Java模因讓我很煩&#xff0c;部分是因為它們總是一個壞主意&#xff0c;但主要是因為人們在找到更好的替代方案后的幾年里仍在繼續使用它們。 使用StringBuffer代替StringBuilder 從2004年開始&#xff0c;用于StringBuf…

Python TK編程第一部分 Hello Again

當你想寫大一點的程序的時候&#xff0c;將你的代碼封裝到一個或者多個類里會是一個不錯的辦法。下面hello world這個例子來自Matt Conway的Tkinter Life Preserver. [python]view plain copy from Tkinter import * class App: def __init__(self, master): …