我想不出如何给出一个正确的问题短语。我有一个具有以下结构的课程。
class Obj{
private String key;
private int occ;
// getter and setter methods
}
List<Obj> s = new ArrayList<Obj>();
s.add("the",54);
s.add("the",22);
s.add("einstein",2);
s.add("einstein",6);
我需要以下列方式获取HashMap。基本上只需添加与值字段对应的值。
{the=66,einstein=8}
我无法弄清楚如何实现这一点。由于地图本身只包含唯一值,我不知道如何实现它。集合中是否有任何方法或以任何方式实现此目的?对不起我是java的新手。
答案 0 :(得分:1)
我认为OP正试图将列表转换为HashMap,并将具有相同键的那些值的“occ”值相加:
HashMap<String, Integer> m = new HashMap<String, Integer>();
for (Obj o : s)
{
Integer i = m.get(o.getKey());
if (i == null)
{
i = o.getOcc();
}
else
{
i += o.getOcc();
}
m.put(o.getKey(), i);
}
答案 1 :(得分:1)
如果你想要使用的是一个hashmap,你应该这样做:
Map<String, Long> map = new HashMap<String, Long>();
map.put("the", 54);
然后,如果你想处理重复的值,比如总结它们:
Long value = map.get("the");
map.put("the", value + 22);
所以,一般来说:
String key = //...
Long newValue = //...
Long oldValue = map.get(key);
if (oldValue != null) {
newValue += oldValue;
}
map.put(key, newValue);