2011-09-28 11 views
3

我從在我需要在解析排序的JSON字符串創建的地圖。的Java從某個指數

如果在索引6(7鍵)的一個關鍵,我想迭代地圖以便能夠從該鍵迭代到地圖的末尾,並使用這些鍵/值對執行我需要的處理。

有沒有辦法做到這一點?

回答

9

A Map通常不會維護密鑰的順序。您需要使用

  • A NavigableMap,例如TreeMap。如果您的鑰匙具有自然順序,則最好。
  • A LinkedHashMap這是一個保留插入順序的地圖實現。

例片段(LinkedHashMap的):

Map<Integer, String> map = new LinkedHashMap<Integer, String>(); 

map.put(1, "one"); 
map.put(2, "two"); 
map.put(3, "three"); 
map.put(4, "four"); 
map.put(5, "five"); 
map.put(6, "six"); 
map.put(7, "seven"); 
map.put(8, "eight"); 
map.put(9, "nine"); 

int index = 0; 
for (Integer key : map.keySet()) { 
    if (index++ < 6) 
     continue; 

    System.out.println(map.get(key)); 
} 

// Prints: 
//  seven 
//  eight 
//  nine 

例片段(TreeMap中):

TreeMap<Integer, String> map = new TreeMap<Integer, String>(); 

map.put(5, "five"); 
map.put(6, "six"); 
map.put(7, "seven"); 
map.put(8, "eight"); 
map.put(9, "nine"); 

for (Integer key : map.tailMap(6).keySet()) 
    System.out.println(map.get(key)); 

// Prints 
//  six 
//  seven 
//  eight 
//  nine 
+0

LinkedHashMap正是我所需要的,並且索引解析完美無缺! – pm13

0
The Map interface doesn't allow direct access by index. The best you can do is something like: 

Map m; 
.... 
int count 0; 
for(object el : m){ 
    if(count++ < 6) continue; 
    //do your stuff here 
} 

這是假設你的Map實現排序 - 否則枚舉時不保證順序。

0

根據底層的地圖實現,訂單在解析時已經丟失。

LinkedHashMap是您所追隨的野獸 - 鏈接部分爲您提供可預測的迭代次序。