Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.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 在所有键中替换HashMap值_Java_Hashmap - Fatal编程技术网

Java 在所有键中替换HashMap值

Java 在所有键中替换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.

我通过逐个放置值来创建HashMap。每次迭代后打印hashmap时,结果hashmap包含所有键的相同值。我不明白为什么会这样。我已将输出粘贴到下面

HashMap(字符串、列表(对象))mRestrictions

                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(),它可以清除所有的值。