搜尋

首頁  >  問答  >  主體

java - 使用ArrayList<String> 和 使用HashMap<String, String> 存储键值对,哪个速度更快一些

ringa_leeringa_lee2887 天前726

全部回覆(6)我來回復

  • 高洛峰

    高洛峰2017-04-18 10:43:08

    不建議使用偶數存鍵,奇數存值的ArrayList方式,這個與我們寫程式碼的一般邏輯相悖,對後來維護者也會造成很大的困擾。而且,現在手機效能都是很不錯的,你的使用場景中,無需考慮效能的問題。

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:43:08

    對於你所說的資料量小於10的情況下,ArrayList 和HashMap誤差很小,使用哪一個都不會影響效能;但從技術層討論這個問題,就多囉嗦兩句^.^

    ArrayList是有序集合,其底層其實就是一個數組,如果是遍歷的話和存儲相對於HashMap還是要快些,但其增加、刪除會比較慢,特別是從列表中間增加、刪除(扯遠了)

    而HashMap是一個無序哈希表,他的查詢順序是跟資料量直接關聯的,簡單點說就是資料量越大,查詢越慢!

    總結:
    小數據:兩者皆可使用。
    大數據:查詢頻繁使用ArrayList,增刪、改頻繁,使用HashMap。
    超大數據:使用ArrayList;

    回覆
    0
  • PHPz

    PHPz2017-04-18 10:43:08

    這個跟數據量有關

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:43:08

    看你的使用方式囉,如果只是儲存和遍歷List快,如果要透過key查value的話Map快

    回覆
    0
  • PHPz

    PHPz2017-04-18 10:43:08

    雖然不知道你為什麼要比較List和Map的儲存那個更快,對於這兩個介面都有不同的實作類別,像ArrayList和LinkedList就有很大不同,而HashMap, TreeMap, LinkedHashMap, WeakHashMap, IdentityHashMap這些Map的實現類行為,效率,保存物件週期以及key的等價策略更是有很大差異.當我沒回答吧/(ㄒoㄒ)/~~

    回覆
    0
  • 高洛峰

    高洛峰2017-04-18 10:43:08

    樓上對效能已經解釋的很清楚了,
    如果儲存的資料小於10個的話,可以直接在聲明時指定最大值10,這樣可以節省記憶體空間,

    List<String> list = new ArrayList<>(10);
    Map<String, String> map = new HashMap<>(10);

    回覆
    0
  • 取消回覆