java - 如果存在特定键 Java 8 的值,则检查列表映射

标签 java list dictionary java-8 java-stream

在 Java 7 中我有

Map<String, List<String>> m = new HashMap<String, List<String>>();
boolean result = false;
m.put("Name1", Arrays.asList("abc*1"));
m.put("Name2", Arrays.asList("abc@*1"));


for (Map.Entry<String, List<String>> me : m.entrySet()) {
    String key = me.getKey();
    List<String> valueList = me.getValue();
    if (key.equals("Name2"){
        System.out.print("Values: ");
        for (String s : valueList) {
            if(s.contains("@"){
                result = true;
            }
        }
    }
} 

如果 Name2 包含 @ 使用任何匹配项,我如何获得 în bool 结果?

我尝试使用以下代码,但我不知道如何使用 IT 来获取特定 key

result = m.values().stream().anyMatch(v -> v.contains("@"))

最佳答案

执行以下操作:

boolean result = m.getOrDefault("Name2", Collections.emptyList()).stream()
    .anyMatch(i -> i.contains("@"));

如果Map包含一个正确的键,检查它的任何元素是否属于 List因为值包含特定字符。如果Map不包含 key ,模拟空 Collection它根本不包含任何内容,结果自动评估为 false .

编辑:正如@Michael 建议的那样,使用 Collections.emptyList() 是比 new ArrayList<>() 更好的选择.

关于java - 如果存在特定键 Java 8 的值,则检查列表映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50717771/

相关文章:

python - 将 csv 中的选定列转换为字典

matlab - 如何在MATLAB中使用containers.Map保存元胞数组?

arrays - 将 json 文件编码到 map 中

java - 尽管没有代码明确泄漏未初始化的对象泄漏到另一个线程?

java - JSCH session 连接问题

python - 如何在同一索引处用另一个字符串中的字符优雅地替换一个字符串中的某些字符?

java - 遍历列表时获取 ConcurrentException

java - 不使用文件的 Hadoop 自定义输入格式

java - Websphere MQ 无法创建初始 JNDI 上下文

C# 将列表的元素分配给变量列表