Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用数组基于公共键添加值_Java_Arrays_Map - Fatal编程技术网

Java 使用数组基于公共键添加值

Java 使用数组基于公共键添加值,java,arrays,map,Java,Arrays,Map,我有两个数组字符串键[],长值[]。钥匙可以复制。我需要地图中的唯一键及其值的总和。下面是我正在尝试的代码,但我得到了数组越界异常 public HashMap < String, Long > getValueMap(String key[], long value[]) { Map newmap = new HashMap(); long count = 0; for (int i = 0; i < value.length; i++) {

我有两个数组字符串键[],长值[]。钥匙可以复制。我需要地图中的唯一键及其值的总和。下面是我正在尝试的代码,但我得到了数组越界异常

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);
}
对上述代码进行了修改,使其看起来简单。有人能帮忙吗?

键[]可能比值[]短。

键[]可能比值[]短。

替换

     for(i,i<10,i++){

替换

     for(i,i<10,i++){


这里数组长度等于0

long[] value = {};
这里您尝试设置值并得到一个错误,因为数组长度==0

value[i] = wl.getValue();
使用value.length而不是幻数10


这里数组长度等于0

long[] value = {};
这里您尝试设置值并得到一个错误,因为数组长度==0

value[i] = wl.getValue();
使用value.length而不是幻数10


这可能是因为数组值和键在尝试向其添加值之前尚未初始化

long[]值=新的long[10]

字符串键[]=新字符串[10]


为什么需要使用数组而不是列表?因为如果你需要长度来改变变量,我认为这是一个更舒适的方法

这可能是因为数组value和key在尝试向其添加值之前尚未初始化

long[]值=新的long[10]

字符串键[]=新字符串[10]


为什么需要使用数组而不是列表?因为如果你需要长度来改变变量,我认为这是一个更舒适的方法

在哪一行是异常Thrown在一个循环中,长度是可变的,在另一个循环中,它硬编码为10。你传入的数组有多长?@Floris长度是可变的。。我把它放在一个for循环中只是为了显示。。。我实际上是在迭代一个对象列表。你能解释一下第二个代码块要做什么吗?它不是用Java编译的-它的意思是…?为什么使用基本数组而不是List的实现?在哪一行是异常Thrown在一个循环中长度是可变的,在另一个循环中它硬编码为10。你传入的数组有多长?@Floris长度是可变的。。我把它放在一个for循环中只是为了显示。。。我实际上是在迭代一个对象列表。你能解释一下第二个代码块要做什么吗?它不是用Java编译的-它的意思是…?为什么使用基本数组而不是List的实现?好的,我将尝试使用List而不是数组,好的,我将尝试使用List而不是数组,