Java中仅向HashMap添加非空非空白值的实现方法
解决HashMap仅添加非空非空白键值对的问题
方法一:直接进行非空非空白判断
最直观的方式是先获取目标值,判断它既不是null也不是空白字符串后,再存入HashMap:
HashMap<String, String> attributes = new HashMap<>(); // 处理Id String id = systemGeneratedDetails.get(0).getId(); if (id != null && !id.isBlank()) { attributes.put("Id", id); } // 处理Name String name = systemGeneratedDetails.get(0).getName(); if (name != null && !name.isBlank()) { attributes.put("Name", name); }
注:
isBlank()是Java 11及以上版本的方法,可识别空格、制表符等各类空白字符;若使用Java 8,可替换为!id.trim().isEmpty()。
方法二:封装工具方法复用逻辑
如果需要多次处理这类场景,可把判断逻辑封装成工具方法,减少重复代码:
// 定义工具方法 private void putIfNonBlank(Map<String, String> map, String key, String value) { if (value != null && !value.isBlank()) { map.put(key, value); } } // 使用示例 HashMap<String, String> attributes = new HashMap<>(); putIfNonBlank(attributes, "Id", systemGeneratedDetails.get(0).getId()); putIfNonBlank(attributes, "Name", systemGeneratedDetails.get(0).getName());
方法三:用Java 8+ Optional简化代码
借助Optional的链式调用,能更简洁地实现过滤逻辑:
HashMap<String, String> attributes = new HashMap<>(); // 处理Id Optional.ofNullable(systemGeneratedDetails.get(0).getId()) .filter(s -> !s.isBlank()) .ifPresent(id -> attributes.put("Id", id)); // 处理Name Optional.ofNullable(systemGeneratedDetails.get(0).getName()) .filter(s -> !s.isBlank()) .ifPresent(name -> attributes.put("Name", name));
内容的提问来源于stack exchange,提问作者Johny
相关产品推荐
相关产品推荐

