【发布时间】:2013-01-09 10:33:53
【问题描述】:
我有 2 个数组 String key[] , long value[] 。键可以重复。我需要唯一键及其映射中值的总和。下面是我正在尝试的代码,但我得到 Array out of bound 异常
public HashMap < String, Long > getValueMap(String key[], long value[]) {
Map newmap = new HashMap();
long count = 0;
for (int i = 0; i < value.length; i++) {
for (int j = 0; j < value.length; j++) {
if (key[i] == key[j]) {
count = count + value[j];
}
}
newmap.put(key[i], count);
count = 0;
}
return (HashMap < String, Long > ) newmap;
}
long[] value = {};
String key[] = {};
int i = 0;
if(!worklogs.isEmpty()){
for(Worklog wl:worklogs){
value[i]=wl.getValue();
key[i]=wl.getAuthor();i++;
}
}
HashMap < String, Long > newhm = getValueMap(key, value);
Iterator entries = newhm.entrySet().iterator();
while (entries.hasNext()) {
Map.Entry entry = (Map.Entry) entries.next();
String newkey = (String) entry.getKey();
Long newvalue = (Long) entry.getValue();
System.out.println("Key = " + newkey + ", Value = " + newvalue);
}
修改了上面的代码,使其看起来简单。请问有人可以帮忙吗?
【问题讨论】:
-
在哪一行抛出异常
-
在您的一个循环中,长度是可变的,在另一个循环中,它被硬编码为 10。您传入的数组有多长?
-
@Floris 长度是可变的..我把它放在一个 for 循环中只是为了显示......我实际上是在迭代一个对象列表(wl)
-
你能解释一下第二个代码块试图做什么吗?它不能在 Java 中编译 - 是否意味着...?
-
你为什么使用原始数组而不是
List的实现?