Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.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_Arraylist - Fatal编程技术网

Java 每个键都在更新,而不是哈希表中的唯一键

Java 每个键都在更新,而不是哈希表中的唯一键,java,arraylist,Java,Arraylist,在起始哈希表中包含keyString和valueArrayList。在运行以下代码一段特定时间后,在每次更新中,每个键都会使用相同的ArrayList进行更新。代码如下: int c=0; ke=location.keys(); value=new ArrayList<String>(); System.out.println

在起始哈希表中包含keyString和valueArrayList。在运行以下代码一段特定时间后,在每次更新中,每个键都会使用相同的ArrayList进行更新。代码如下:

                    int c=0;
                    ke=location.keys();
                    value=new ArrayList<String>();
                    System.out.println("Before operation: "+value.size());
                    while(ke.hasMoreElements() && c==0)
                    {
                        //System.out.println("Start  value Size: "+value.size());
                        String hKey=ke.nextElement();
                        String spl[]=hKey.split(", ");
                        Double kLat=Double.parseDouble(spl[0]);
                        Double kLon=Double.parseDouble(spl[1]);
                        if(haversine(lat, lon, kLat, kLon)<=30)
                        {
                            count++;
                            c=1;
                            value.clear();
                            value=location.get(hKey);
                            location.remove(hKey);
                            value.add(lat+", "+lon);
                            if(spl.length==2)
                            {
                                ky++;
                                hKey=hKey+", "+timedate;
                            }
                            else
                                hKey=kLat+", "+kLon+", "+timedate;
                            location.put(hKey, value);
                            System.out.println();
                            break;
                        }
                     }

您确实只有一个列表:在循环之前分配的列表。您需要将value.clear替换为value=new ArrayList。哦,循环外不使用值。我也尝试过,但结果相同。每个键都用相同的值更新。如何创建位置映射,映射是否共享所有键的相同列表实例?在开始位置,哈希表包含质心作为键,空arrayList作为值。