Hashmap,返回键和值作为列表

时间:2015-03-31 01:26:00

标签: java

我有一个要做的功课,所以我已经完成了脚本,但问题在于值。

主要代码是(我不能因为作业而改变它):

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

必须返回:

abc 2

def 2

ghi 1

我不知道如何处理。

现在只显示:

ABC

DEF

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小时的搜索后放弃等...

4 个答案:

答案 0 :(得分:1)

我认为,既然您已了解keySetvalueSet,那么您的下一个任务就是了解entrySet。这是Map.Entry<K,V>项的集合,它们又由键和值组成。

这正是您完成任务所需要的 - 只需迭代entrySet的{​​{1}},同时在结果列表中添加值和键的串联:

Map

请注意,如果您使用常规result.add(entry.getKey() + " " + entry.getValue()); ,则结果中的项目不会按任何特定顺序排列。

答案 1 :(得分: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,因此可能会出现编译器错误,但这个想法应该有效

答案 2 :(得分: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;
}

答案 3 :(得分:0)

如果要按键顺序迭代地图条目,请使用有序地图:

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

然后添加您的条目​​,并打印:

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