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

检查映射中与Java中的列表内容匹配的键

苏宾鸿
2023-03-14
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class TestClass {

    public static void main(String[] args) {

        List<String> ll = new ArrayList<>();
        Map<String, Integer> m = new HashMap<>();
        ll.add("a");
        ll.add("b");
        ll.add("d");

        m.put("a", 1);
        m.put("b", 1);
        m.put("c", 1);

        if(ll.size() != m.size){
       System.out.println("Throw Exception");
         }

        for(String s : ll) {

            if(!m.containsKey(s)) {
                System.out.println("Throw Exception");
            }
        }
    }
}

共有1个答案

孔逸春
2023-03-14

映射中的每个键都需要出现在列表中,否则我需要抛出一个异常

您可以使用stream.anymatch并迭代映射的keyset(为了可读性的目的更新了变量名)来实现:

if(map.keySet().stream().anyMatch(key -> !list.contains(key))) {
    throw new CustomException("");
}

使用List.ContainsAll:

if(!list.containsAll(map.keySet())) {
    throw new CustomException("");
} 
Set<String> allUniqueElementsInList = new HashSet<>(list);
if(!allUniqueElementsInList.containsAll(map.keySet())) {
    throw new CustomException("");
}
 类似资料:
  • 有没有一种简单/快速的方法来检查地图中的元素是否使用流不同?我有这张地图:

  • 我有一张这样的清单 在此基础上,我想创建一个如下所示的地图: 我试过了 但是没有得到期望值。我只得到最后一个元素。如果我将列表创建移到foreach循环之外,那么我将获得所有值。

  • 我有以下方式的地图列表: 我想从地址字段的值中获取地址值。例如, 我想从键值"AddressUsageType"中获取值"PRINCIPAL" 我尝试过使用过滤器和许多其他MAP函数,但最终没有找到合适的解决方案。 这是我的代码片段,获取第一个键值对的值: 以下是上述片段的输出:

  • 我有一个实体,看起来像这样: 输入数据是一个

  • 匹配查询用于实现以下情况的映射是什么 不区分大小写的搜索 数字搜索 特殊字符搜索 单字符搜索 > 我尝试使用通配符,但id不支持区分大小写 尝试使用小写规范化器匹配查询,它不支持特殊字符和单字符搜索 已尝试使用 ngram 匹配查询,但它不支持特殊字符和数字搜索。 任何人都可以帮助我的映射来支持上面提到的所有情况,无论是类型还是类型都很好

  • 我有这样的收藏:<代码>地图 所以返回将是: