Bha*_*ham 15 java loops list arraylist hashmap
我有一个有四个答案的Hashmap.我有前两个问题.我就是这样做的
// Awnsers question 1
antwoorden1.put("Hypertext Preprocessor", true);
antwoorden1.put("Hypertext PHPprocessor", false);
antwoorden1.put("Hypertext processor", false);
antwoorden1.put("Preprocessor PHP", false);
// Awnsers question 2
antwoorden2.put("Model view config", false);
antwoorden2.put("Model view connect", false);
antwoorden2.put("Model view controllers", false);
antwoorden2.put("Model view controller", true);
Run Code Online (Sandbox Code Playgroud)
现在我需要访问所有这些信息,所以我要做的是将两个HashMaps添加到一个ArrayList
// Add the Hashmaps to the arrayList
alleAntwoorden.add(antwoorden1);
alleAntwoorden.add(antwoorden2);
Run Code Online (Sandbox Code Playgroud)
但是我如何循环遍历ArrayList以从HashMap获取键和值?这是我已经尝试过的.
for(int i = 0; i < alleAntwoorden.size(); i++)
{
for (Map.Entry<String, Boolean> entry : alleAntwoorden.get(i).entrySet())
{
String key = entry.getKey();
Object value = entry.getValue();
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
但我总是得到以下消息:不兼容的类型
Antwoorden1,antwoorden2和alleAntwoorden定义为:
private ArrayList<HashMap> alleAntwoorden;
private HashMap<String, Boolean> antwoorden1, antwoorden2;
Run Code Online (Sandbox Code Playgroud)
Tom*_*Tom 21
来自评论:
private ArrayList<HashMap> alleAntwoorden;
Run Code Online (Sandbox Code Playgroud)
这就是问题.您正在使用原始类型映射,但是您尝试为变量分配单个条目Map.Entry<String, Boolean>.这不起作用,因为您当前的地图是类型HashMap<Object, Object>.将变量更改alleAntwoorden为:
private List<Map<String, Boolean>> alleAntwoorden;
Run Code Online (Sandbox Code Playgroud)
请注意,我还将类型更改为其接口类型:您是否始终使用Java编写接口.
Thi*_*ark 12
在以下界面上:
Map<String, Boolean> map1 = new HashMap<>();
Map<String, Boolean> map2 = new HashMap<>();
List<Map<String, Boolean>> list = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
我们可以使用foreach循环进行迭代:
for (Map<String, Boolean> entry : list) {
for (String key : entry.keySet()) {
Boolean value = entry.get(key);
System.out.println("key = " + key);
System.out.println("value = " + value);
}
}
Run Code Online (Sandbox Code Playgroud)