数据校验——Map中判断是否包含Key值

本文讨论了在数据校验过程中如何判断输入值是否合法,通过使用map的containsKey方法和javax.validation.Validator进行注解校验两种方式,为前端传来的数据提供有效的验证手段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天遇到一个问题,在做数据校验的时候要判断输入的值是否合法,规定了数据的范围,在一个map中

 

这时可以用一个if来判断,这里用到timeUnitMap.containsKey(key)方法,key中拿到前端传过来的值,这样就可以判断该值是否是map中的key,就可以判断了,另外一种是用javax.validation.Validator,进行注解校验。下篇讨论这个问题。

### 访问Java Map中嵌套的内部Map元素 在Java编程语言里,`Map` 接口允许存储键对集合。当涉及到嵌套 `Map` 的情况时,即一个 `Map` 的本身也是一个 `Map`,可以通过连续调用 get 方法来访问最内层的数据[^1]。 对于具体操作而言,假设有一个外层 `HashMap<String, HashMap<String, Integer>> outerMap`,其中字符串作为外部键而其对应的是一个新的哈希映射表;这个新创建出来的子级哈希映射表同样接受字符串类型的键但是整数型数作为关联项。为了读取特定路径下的条目,可以采用如下方式: ```java Integer value = outerMap.get("outerKey").get("innerKey"); ``` 上述代码片段展示了如何通过指定两步走的方式——先定位到外围容器再深入至目标位置——从而取得最终所需的单一项目实例[^3]。 得注意的是,在尝试获取深层结构内的成员之前应当确认每一层级的存在性以免抛出异常。因此建议加入必要的空指针校验逻辑确保程序健壮运行[^2]。 另外一种常见场景涉及到了更复杂的多层次封装情形下(比如 List 和 Set 与多个 Maps 组合),此时可能需要用到循环迭代或是流式处理API来进行更加灵活的操作。 #### 使用Stream API简化复杂查询 随着 Java 版本不断更新,引入了许多现代化特性使得开发者能够写出更为简洁高效的代码。特别是 Stream API 提供了一种声明式的风格用于集合类数据源上的聚合操作。下面给出一段利用此功能实现对多层嵌套 map 进行筛选的例子: ```java import java.util.*; import java.util.stream.*; public class NestedMaps { public static void main(String[] args) { // 构建测试用例 Map<String, Map<Integer, String>> nestedMap = new HashMap<>(); // 添加一些初始数据... // 找出所有满足条件 (key >= 5 && value contains 'a') 的 entrySet 并打印出来 nestedMap.entrySet().stream() .flatMap(entry -> entry.getValue().entrySet().stream()) .filter(innerEntry -> innerEntry.getKey() >= 5 && innerEntry.getValue().contains("a")) .forEach(System.out::println); } } ``` 这段示范说明了即使面对较为棘手的数据层次关系也可以借助现代工具轻松应对并完成预期任务[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值