如何在地图中输入验证值?

问题描述 投票:0回答:3

我有一个

Map<String, Object>
,我称之为 myMap,我想遍历每个键并确保它的值是
String
int
Boolean
类型之一。

我试过这些方法:

myMap.entrySet().forEach(key -> myMap.get(key));

我不知道如何进行实际检查...

java spring-boot maps
3个回答
2
投票

您可以用

myMap.values()
检查所有
Stream#allMatch

boolean pass = myMap.values().stream().allMatch(o -> o instanceof String || 
                    o instanceof Integer || o instanceof Boolean);

注意,值不可能是

int
类型;它只能是包装类
Integer
.


1
投票

取决于您的需要,但以下代码将过滤掉所有值不是给定类型的条目

private Map<String, Object> getSupportedTypes(final Map<String, Object> source) {
    return source.entrySet()
            .stream()
            .filter(entry -> entry.getValue() instanceof Integer
                    || entry.getValue() instanceof String
                    || entry.getValue() instanceof Boolean)
            .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
}

0
投票

这是另一个解决方案:

List<Class> expectedTypes = List.of(String.class, Integer.class, Boolean.class);
return source.values().stream().allMatch(v -> expectedTypes.contains(v.getClass()));
© www.soinside.com 2019 - 2024. All rights reserved.