2015-03-31 102 views
-1

我有作業要做,所以我已經完成了腳本,但問題是與值。Hasmap,返回鍵和值作爲列表

主要代碼(我不能改變它由於家庭作業):

List<String> result = cw.getResult(); 
for (String wordRes : result) { 
    System.out.println(wordRes); 
} 

它必須返回:

ABC 2

DEF 2

GHI 1

我不知道該如何處理。

現在只顯示:

ABC

高清

GHI

我不知道如何改變這種方法的getResult與hasmap的價值迴歸,以及在不改變第一主碼。

public List<String> getResult() { 
    List<String> keyList = new ArrayList<String>(list.keySet()); 
    return keyList; 
} 

HashMap的是:{abc=2, def=2, ghi=1} 和列表:Map<String, Integer> list = new HashMap<String, Integer>();

請幫助我,如果你知道有決心,我放棄了4個小時來尋找等後...

+0

你能告訴整個代碼段?你的問題不清楚 – stanfordude 2015-03-31 01:32:07

+0

幫助你理解令人困惑的家庭作業的最好的人是你的老師。我們很難知道你知道了多少,或者你的教師想要教你什麼。充其量,這裏的某個人可能會給你一些可以工作的代碼,但是你的老師可以幫助你理解它。 – dimo414 2015-03-31 01:35:53

回答

0

最簡單的方法使一個ArrayList和添加爲@dasblinkenlight說...

Iterator<?> it = list.entrySet().iterator(); 
while (it.hasNext()) { 
    @SuppressWarnings("rawtypes") 
    Map.Entry maps = (Map.Entry) it.next(); 
    lista.add(maps.getKey() + " " + maps.getValue()); 
} 
} 
public List<String> getResult() { 
    List<String> temp = lista; 
    return temp; 
} 
1

我想,現在您已經瞭解了keySetvalueSet,您的下一個任務是瞭解entrySet。這是Map.Entry<K,V>項目的集合,這些項目又由關鍵字和值組成。

這正是你需要完成你的任務是什麼 - 只是迭代的entrySetMap同時增加值的串聯和關鍵,你的結果:

result.add(entry.getKey() + " " + entry.getValue()); 

請注意,如果您使用的是常規HashMap,結果中的項目不會按任何特定順序排列。

+0

嗯,我只是認爲有任何機會設置另一個列表相同的方法intead。 – WinterTime 2015-03-31 01:59:37

+0

@Potar你想要的字符串列表在地圖裏不存在,所以你必須自己創建。另一方面,如果你想要一個'List >',你可以通過返回'new ArrayList >(map.entrySet())'來免費獲得它。 – dasblinkenlight 2015-03-31 02:42:31

0

你需要改變這一行:

List<String> keyList = new ArrayList<String>(list.keySet()); 

到:

//first create the new List 
    List<String> keyList = new List<String>(); 
    //iterate through the map and insert the key + ' ' + value as text 
    foreach(string item in list.keySet()) 
    { 
     keyList.add(item+' '+list[item]); 
    } 
    return keyList; 

我還沒有在一段時間編寫的Java這樣的編譯器錯誤可能會出現,但這個想法應該工作

0

如果你想遍歷地圖條目的鍵的順序,使用一個有序圖:

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

添加您的條目​​,並打印:

for (Map.Entry<String, Ibteger> entry : map.entrySet()) { 
    System.out.println(entry.getKey() + " " + entry.getValue()); 
}