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