2015-03-31 67 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()); 
}