我有一个要做的功课,所以我已经完成了脚本,但问题在于值。
主要代码是(我不能因为作业而改变它):
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小时的搜索后放弃等...
答案 0 :(得分:1)
我认为,既然您已了解keySet
和valueSet
,那么您的下一个任务就是了解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());
}