簡體   English   中英

將密鑰放入 hashmap 並按相同順序檢索

[英]Put keys in hashmap and retrieve in same order

下面是我用來在 hashmap 中插入值的一段代碼。

String[] folders={"Movies/HD/By Genre/Action","Movies/HD/By Genre/Comedy"};
HashMap<String, String> sdsResults = new HashMap<String, String>();

for(int i=0; i<folders.length; i++){
    sdsResults.put(folders[i], null);
}

Iterator<String> itr = sdsResults.keySet().iterator();
while(itr.hasNext()){
    System.out.println("keys in map are = "+itr.next());
}

output 是 -

keys in map are = Movies/HD/By Genre/Comedy
keys in map are = Movies/HD/By Genre/Action

現在我想按我輸入的順序來輸入鍵。即首先是動作片,然后是喜劇片。 但相反的順序即將到來。

有人可以解釋為什么會這樣嗎? 我希望順序與文件夾內容相同。 我怎樣才能做到這一點?

hash 中的鍵順序未定義。 你想要一個 map。 這是內部結構的比較。

基本上,當您將某些東西放入 hash 中時,您會擾亂密鑰。 這是一個單向 function 關鍵是你不能取消它——這是一種把 100 件東西放在 10 個盒子里的方法。

LinkedHashMap 應該解決排序問題。 類似問題和此處的答案Order of values retrieved from a HashMap

您可以使用 Apache 的 Commons-Collection 庫中的 ListOrderedMap 來保持順序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM