joe*_*joe 1 java hashmap data-structures
我得到一个NullPointerException在我的HashMap包含多个密钥.我遇到了内存问题并尝试压缩我的代码而不创建不必要的变量,所以我尝试这样做:
HashMap<String,HashMap<String, ArrayList<HashMap<String, String>>>> data = new HashMap<>();
data
.put(user, new HashMap<String, ArrayList<HashMap<String,String>>>())
.put(info, new ArrayList<HashMap<String, String>>());
Run Code Online (Sandbox Code Playgroud)
我正在接受NullPointerException:
.put(info, new ArrayList<HashMap<String, String>>());
Run Code Online (Sandbox Code Playgroud)
知道为什么吗?我必须先创建变量吗?
.put(user, new HashMap<String, ArrayList<HashMap<String,String>>>())如果user密钥不在地图中,则返回null .否则,它将返回与该键关联的旧值.
你应该不是链中的put电话.即使你没有得到NullPointerException,你也不会得到你想要的行为,因为第二个put(.put(info, new ArrayList<HashMap<String, String>>()))将在旧值上执行.除了错误之外,它还会降低您的代码的可读性.
您必须使用其他变量:
HashMap<String,HashMap<String, ArrayList<HashMap<String, String>>>>
data = new HashMap<>();
HashMap<String, ArrayList<HashMap<String,String>>>
map2 = new HashMap<String, ArrayList<HashMap<String,String>>>();
data.put(user, map2);
map2.put(info, new ArrayList<HashMap<String, String>>());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |