在 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/