Java 在所有键中替换HashMap值
我通过逐个放置值来创建HashMap。每次迭代后打印hashmap时,结果hashmap包含所有键的相同值。我不明白为什么会这样。我已将输出粘贴到下面 HashMap(字符串、列表(对象))mRestrictionsJava 在所有键中替换HashMap值,java,hashmap,Java,Hashmap,我通过逐个放置值来创建HashMap。每次迭代后打印hashmap时,结果hashmap包含所有键的相同值。我不明白为什么会这样。我已将输出粘贴到下面 HashMap(字符串、列表(对象))mRestrictions for(int k = 0; k < jArr.length(); k++){ Log.d(TAG,"inner Key:- "+jArr.getString(k)+" Values:- "+jObj.
for(int k = 0; k < jArr.length(); k++){
Log.d(TAG,"inner Key:- "+jArr.getString(k)+" Values:- "+jObj.get(jArr.getString(k)));
list.clear();
list.add(0,jObj.get(jArr.getString(k)));
//Log.d(TAG, "Existing List:- "+list);
mRestrictions.put(jArr.getString(k),list);
Log.d(TAG, "One by One Restrictions:- "+mRestrictions);
}
for(int k=0;k
输出:-
逐个限制:-{profile_name=[Test1]}
逐个限制:-{profile_name=[url],url=[url}
逐个限制:-{profile_name=[0],action=[0],url=[0]}
逐个限制:-{profile_name=[Certificate],action=[Certificate],authentication_type=[Certificate],url=[Certificate]}
逐个限制:-{profile_name=[ranjith],authentication_type=[ranjith],username=[ranjith],action=[ranjith],url=[ranjith]}问题可能是您在循环中使用了相同的列表对象 尝试将列表对象(列表变量)的声明移动到循环中,而不是调用。清除
实际上,您每次都向所有键添加了相同的对象,因为java通过引用传递对象。问题可能在于您在循环中使用了相同的列表对象
list.clear();
list.add(0,jObj.get(jArr.getString(k)));
尝试将列表对象(列表变量)的声明移动到循环中,而不是调用。清除
实际上,每次都向所有键添加相同的对象,因为java通过引用传递对象
list.clear();
list.add(0,jObj.get(jArr.getString(k)));
这与您认为的不一样。Java按值传递引用。这一行清除已经放在其他地方的列表。按照您编写的方式,只有一个列表将所有这些键映射到其中
相反,每次都必须创建一个新列表。不能重复使用同一个列表
这与您认为的不一样。Java按值传递引用。这一行清除已经放在其他地方的列表。按照您编写的方式,只有一个列表将所有这些键映射到其中
相反,您每次都必须创建一个新的列表。您不能重复使用同一个列表。这是什么语言?Java?请适当标记。您能告诉我们
jArr
的定义吗?这看起来可能是实现中的一个bug。jArr是一个jsonArray,jArr:-[“配置文件名称”、“url”、“操作”、“身份验证类型”、“用户名”]这是什么语言?Java?请适当地标记。你能给我们看一下jArr
的定义吗?这看起来可能是实现中的一个bug。jArr是一个jsonArray,jArr:-[“profile\u name”、“url”、“action”、“authentication\u type”、“username”]谢谢你,路易斯。我不知道clear(),它可以清除所有的值。谢谢你,路易斯。我不知道clear(),它可以清除所有的值。