当前位置: 首页 > 知识库问答 >
问题:

根据一些标准向Hashmap添加值

韦安怡
2023-03-14

下面的代码检查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]

数组列表结果很好,但映射值仅返回true。请帮助我如何根据条件添加k、v以映射,以便映射结果如下所示[{Access=false},{Access=true},{Access=false},{Access=false},{Access=true}]。

共有3个答案

裴昊阳
2023-03-14

代码将帮助您:

List<Map<String, Boolean>> myListOfMaps = new ArrayList<>();
List<String> al1 = new ArrayList<>();
al1.add("92");
al1.add("94");
al1.add("91");
al1.add("98");

String id = "95,98,94";

List<String> result = new ArrayList<>();
for (int i = 0; i < al1.size(); i++) {
    Map<String, Boolean> map = new HashMap<>();
    if (id.contains(al1.get(i))) {
        result.add("true");
        map.put("Access", true);
    } else {
        result.add("false");
        map.put("Access", false);
    }
    myListOfMaps.add(map);
}
myListOfMaps.forEach(System.out::println);
System.out.println(result);
督德泽
2023-03-14

你必须每次在循环中声明一个新的地图

//...
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);               

}
//...
卢知
2023-03-14

hashmap是一种键值数据结构。存储项目的方式基于键。

也就是说,如果您使用值false向地图添加键Access并打印地图,它将显示:Access: false

如果再次使用值添加Access,则不会添加新密钥,而是会替换以前的值,以便打印Access:true

因此,不要向地图中添加键,而是添加id。map。put(al1.get(i),true)

 类似资料:
  • 有人来解释为什么我有这个错误,怎么贴标签? 多谢!

  • 问题内容: 我正在寻找简单的代码,让我将以下html添加到我的zend表单中: 就是这样,它必须位于表单中我的“ method”元素上方,但仅此而已。对于这样一个简单的动作,我找不到任何不涉及我学习火箭科学的方法(即Zend Decorators)。 问题答案: 目前,我唯一想到的方法是向表单中添加一个虚拟元素,并删除所有带有除您在问题中指定的属性的“ HtmlTag”以外的装饰器。删除装饰器意味

  • 问题内容: 有没有一种方法可以在网站上添加一些自定义字体而不使用图像,Flash或其他图形? 例如,当我在一个婚礼网站上工作时,发现该主题有很多不错的字体。但是我找不到在服务器上添加该字体的正确方法。以及如何将CSS中的字体包含在HTML中?没有图形就可以做到吗? 问题答案: 这可以通过CSS完成: 如果您使用TrueType字体(TTF)或Web开放字体格式(WOFF),则所有常规浏览器均支持该

  • 我有一个数据集 是否有任何方法可以确保,如果不同的的下一个值小于中的值,那么它应该在 列中执行加法。 下面是我期待的结果 所以基本上我寻求一个解决方案,对于每个唯一的< code>field_pointpath,如果它遇到一个小于前一个值的值,那么它应该将前一个值与下一个值相加。 if <代码>值[i 1]

  • 假设我有一个班级: 我有另一个类,其中用户登录,并且根据他是管理员还是普通用户,用户可以访问有限的枚举列表。我知道我可以从类中获取所有枚举的完整列表,但是在枚举类不知道用户信息的情况下,通过某些标准过滤这些枚举的优雅方法是什么? 编辑:以下是它今天的样子: 我正在返回1000个事件的完整列表,而管理员应该只看到有限的数量。

  • 我正试图根据一个标准将x个列的数据归零 例如: 第1页: 一月二月三月四月五月六月七月八月九月十月十一月十二月 第2页: 版本(标准)=2 因此,我想选择前两个月,并在1月份将所有数据归零 更新:到目前为止,我得到了这么多,现在我只能选择 我无法让它选择范围。