根据某些条件将值添加到Hashmap

时间:2017-11-20 14:07:40

标签: java arraylist data-structures hashmap

下面的代码检查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 },{访问=真}]。

3 个答案:

答案 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)