【发布时间】:2017-11-20 14:07:40
【问题描述】:
以下代码检查 ArrayList 中是否存在 id,然后将其添加到地图中。
List<Map<Object, Object>> myListOfMaps = new ArrayList<Map<Object, Object>>();
ArrayList<String> al1 = new ArrayList<String>();
al1.add("92");
al1.add("94");
al1.add("91");
al1.add("98");
Map<Object,Object> map = new HashMap<Object,Object>();
ArrayList<String> result = new ArrayList<String>();
String id = "95,98,94";
for(int i=0;i<al1.size();i++)
{
if(id.contains(al1.get(i)))
{
result.add("true");
map.put("Access", true);
}
else
{
result.add("false");
map.put("Access", false);
}
myListOfMaps.add(map);
}
for (int i = 0 ; i < myListOfMaps.size() ; i++) {
Map<Object, Object> myMap = myListOfMaps.get(i);
for (Entry<Object, Object> entrySet : myMap.entrySet()) {
System.out.println("Key = " + entrySet.getKey() + " , Value = " + entrySet.getValue());
}
}
System.out.println(result);
输出
Key = Access , Value = true
Key = Access , Value = true
Key = Access , Value = true
Key = Access , Value = true
[false, true, false, true]
arraylist 结果很好,但 mapvalues 仅返回 true。请帮助我如何根据条件将 k,v 添加到 map,以便 mapresult 看起来像这样 [{Access=false},{Access=true},{Access=false },{Access=true}]。
【问题讨论】:
-
见置顶答案第二条:stackoverflow.com/questions/19843506
-
你只是放了一个键,并用不同的值覆盖了同一个键。 98 是您遍历的最后一个并且它在列表中,因此您在地图中插入键为“Access”,值为 true,因此每次都为 true
标签: java arraylist data-structures hashmap