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");
}
}
}
}
映射中的每个键都需要出现在列表中,否则我需要抛出一个异常
您可以使用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 匹配查询,但它不支持特殊字符和数字搜索。 任何人都可以帮助我的映射来支持上面提到的所有情况,无论是类型还是类型都很好
我有这样的收藏:<代码>地图 所以返回将是: