下面的代码检查ID存在于ArrayList中或不存在&然后将其添加到地图中。
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 },{访问=真}]。
答案 0 :(得分:1)
散列映射是键值数据结构。存储商品的方式基于键。
这就是说,如果您将一个键Access
添加到值为false
的地图并打印地图,则会显示:Access: false
。
如果再次添加Access
且值true
不会添加新密钥,则会替换之前的值,以便打印Access: true
因此,不要将键Access
添加到地图中,而是添加ID。 map.put(al1.get(i), true);
答案 1 :(得分:0)
你每次在循环中声明一个新的地图
//...
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++)
{
Map<Object,Object> map = new HashMap<Object,Object>();
if(id.contains(al1.get(i)))
{
result.add("true");
map.put("Access", true);
}
else
{
result.add("false");
map.put("Access", false);
}
myListOfMaps.add(map);
}
//...
答案 2 :(得分:0)
此代码可以帮助您:
scope.openMail(mail)