2016-12-24 133 views
1

我使用代碼對地圖中的數據進行排序。如何從ListArray獲取數據(鍵值)

Map<Integer, Integer> map = new HashMap<>(); 
    List list = new ArrayList(map.entrySet()); 
    Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>() { 
     @Override 
     public int compare(Map.Entry<Integer, Integer> a, Map.Entry<Integer, Integer> b) { 
      return a.getValue() - b.getValue(); 
     } 
    }); 

我只是將數據從映射覆制到列表並對其進行排序。 如何從列表中獲取數據?列表的get()方法返回剛纔的對象,而不是我的2個整數

+1

請勿使用原始類型。您的列表應該是List >類型。您似乎已經知道Map.Entry是什麼,因爲您正在對列表進行排序並訪問其值。所以有什麼問題?你讀過Map.Entry的javadoc嗎? –

回答

1

list實際上包含Map.Entry<Integer, Integer>型的元素,所以你可以檢索每個Entry,如下圖所示:

Map<Integer, Integer> map = new HashMap<>(); 
//add the values to map here 

//Always prefer to use generic types shown below (instead of raw List) 
List<Map.Entry<Integer, Integer>> list = new ArrayList<>(map.entrySet()); 

Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>() { 
    @Override 
    public int compare(Map.Entry<Integer, Integer> a, 
        Map.Entry<Integer, Integer> b){ 
         return a.getValue() - b.getValue(); 
    } 
    }); 

    //loop over the list to retrieve the list elements 
    for(Map.Entry<Integer, Integer> entry : list) { 
     System.out.println(entry.getValue()); 
    } 
+0

我的Eclipse無法從元素類型Object轉換爲Map.Entry 。 –

+0

@MikhailNono正是因爲您將列表聲明爲List,而不是List >。閱讀所有的答案和評論,而不是忽略它們。如果你沒有忽視它們,並且仍然有問題,那麼編輯你的問題,發佈你的新代碼,併發布你從編譯器得到的確切完整的錯誤信息。 –

+0

@JBNizet,謝謝。現在代碼正常工作。 –

1

你做:

List list = new ArrayList(map.entrySet()); 

你可以在列表中使用泛型,然後後的名單Entry迭代您的排序是:

List<Entry<Integer, Integer>> list = new ArrayList(map.entrySet()); 
... 
// your sort the list 
.. 
// you iterate on key-value 
for (Entry<Integer, Integer> entry : list){ 
    Integer key = entry.getKey(); 
    Integer value = entry.getValue(); 
} 
+0

異常在線程「主要」 java.lang.Error的:未解決編譯問題: \t的方法的值()是未定義的類型列表 \t語法錯誤,插入「)」以完成packS.SecondProject EnhancedForStatementHeader \t。 SecondProject.main(SecondProject.java:85) –

+0

刷新我認爲的頁面。別忘了聲明帶有泛型類型的'List'。對於導入,請在'java.util'中指定。 – davidxxx

+0

謝謝。現在我的代碼沒有任何錯誤。 –