当前位置: 首页 > 面试题库 >

如何验证HashMap中是否存在值

阴永逸
2023-03-14
问题内容

我有以下内容HashMap,其中key是是,String并且value由表示ArrayList

 HashMap<String, ArrayList<String>> productsMap = AsyncUpload.getFoodMap();

ArrayList<String> foods我的应用程序中还实现了另一个。

我的问题是,从我的第二个中找出我是否HashMap包含特定内容的最佳方法是什么?String``ArrayList

我尝试过但没有成功:

Iterator<String> keySetIterator = productsMap.keySet().iterator();
Iterator<ArrayList<String>> valueSetIterator = productsMap.values().iterator();

    while(keySetIterator.hasNext() && valueSetIterator.hasNext()){
        String key = keySetIterator.next();
        if(mArrayList.contains(key)){
            System.out.println("Yes! its a " + key);
        }
    }

问题答案:

为什么不:

// fast-enumerating map's values
for (ArrayList<String> value: productsMap.values()) {
    // using ArrayList#contains
    System.out.println(value.contains("myString"));
}

而且,如果您必须遍历整个ArrayList<String>,而不是只寻找一个特定值:

// fast-enumerating food's values ("food" is an ArrayList<String>)
for (String item: foods) {
    // fast-enumerating map's values
    for (ArrayList<String> value: productsMap.values()) {
        // using ArrayList#contains
        System.out.println(value.contains(item));
    }
}

编辑

过去,我用一些Java 8惯用语对此进行了更新。

Java 8流API允许使用更具声明性(并且可以说是优雅的)的方式来处理这些类型的迭代。

例如,这是一种实现方法(略为冗长):

// iterate foods 
foods
    .stream()
    // matches any occurrence of...
    .anyMatch(
        // ... any list matching any occurrence of...
        (s) -> productsMap.values().stream().anyMatch(
            // ... the list containing the iterated item from foods
            (l) -> l.contains(s)
        )
    )

…这是实现相同目的的一种更简单的方法,最初是迭代productsMap值而不是内容foods

// iterate productsMap values
productsMap
    .values()
    .stream()
    // flattening to all list elements
    .flatMap(List::stream)
    // matching any occurrence of...
    .anyMatch(
        // ... an element contained in foods
        (s) -> foods.contains(s)
    )


 类似资料:
  • 我是一个新的论坛和Appium/Android自动化,我需要帮助,以验证对象是否存在我的应用程序之前,我采取下一个行动。 信息:[BOOTSTRAP][info]返回结果:{“value”:“未找到元素”,“status”:7} 信息:将命令推送到appium工作队列:[“find”,{“strategy”:“name”,“selector”:“John Doe”,“context”:“”,“mu

  • 在给定的json文档中,如何验证是否存在json路径? 我使用的是jayway jsonpath,代码如下 上述代码可能会引发以下异常 通用域名格式。乱穿马路。jsonpath。PathNotFoundException:路径:$['a.b.c']没有结果 为了缓解这种情况,我打算在尝试使用JsonPath读取该路径之前验证该路径是否存在。阅读 作为参考,我看了以下两个文档,但没有真正得到我想要的

  • 问题内容: 屏幕上有很多单选按钮。选择单选按钮时,其属性为选中。如果未选择单选按钮,则不存在选中的属性。我想创建一个方法,如果该元素不存在,它将通过。 我正在使用Selenium WebDriver和Java。我知道我可以使用来检索属性。我只是不确定如何验证属性不存在,以及如何在不存在属性时通过测试(如果存在则失败)。 选中单选按钮时 未选中单选按钮时 我要在不存在选中属性的情况下通过测试 问题答

  • 我需要验证一个Map值是否为null,因为我经常使用集合,愿意实现验证Map值的通用方法,所以尝试了这个 有没有人能帮助我更深入地理解这个逻辑。

  • 登录后我有一个文本字段。登录后,光标将自动聚焦在该文本字段上。如何验证该文本字段上是否存在光标/焦点? 以下是文本字段的HTML代码:

  • 我有点被这个函数的名字搞糊涂了。为什么不只是?它没有验证的是什么?如果我使用这个函数,它还能在某些情况下抛出吗?我能不能以某种方式“尝试添加”而不得到任何异常,并且如果失败时只返回false? 编辑:我认为这两个问题是相互对立的。如果我用调用,它实际上是添加了无效的头,还是如果它们无效就返回false?