簡體   English   中英

Map.keySet()讀取序列?

[英]Map.keySet() read sequence?

我現在有Map<String, List<String>> map ,在Map中放入兩個值,現在當map中的readset在不同的設備中以不同的順序給出時。

private Map<String, List<String>>  map = new HashMap<>();

map.put("First", new ArrayList<String>());
map.put("Second", new ArrayList<String>());

現在,從此地圖中讀取密鑰。

 Set<String> keys = map.keySet();

 for (int i = 0; i < map.size(); i++) {
     Log.d("key", keys.toArray()[i].toString());
 }

OREO 8.0輸出

D/Key : First
D/Key : Second

OUOWUT在下面8.0

D/Key : Second
D/Key : First

您正在使用HashMap作為數據結構。 與在HashMap ,不保持插入順序,因此您獲得了鍵的隨機順序。 如果要維護插入順序,只需使用LinkedHashMap 維護數據的順序是維護的,您可以簡單地迭代它。

LinkedHashMap示例代碼:

Map<String, String> map = new LinkedHashMap<>();
    map.put("key1", "value2");
    map.put("key3", "value4");
    map.put("key5", "value6");
    map.put("key7", "value8");
    Set<String> keySet = map.keySet();
    for(String st: keySet){
        System.out.println(st);
    }
    for(Map.Entry<String, String> entry : map.entrySet()){
        System.out.println(entry.getKey() + " " + entry.getValue());
    }

輸出:

key1
key3
key5
key7
key1 value2
key3 value4
key5 value6
key7 value8

它與android OS無關。 生成的HashMap Set沒有順序。 但是, Set s有一個命令,例如TreeSet

我得到了一個解決方案,直到我們定義了Set as SortedSet,我們得到了不同順序的鍵序列。

SortedSet<String> keys =  new TreeSet<>(map.keySet());

for (int i = 0; i < map.size(); i++) {
    Log.d("key", keys.toArray()[i].toString());            
}

暫無
暫無

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

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