java - 如何从 HashMap<String, String> 中过滤 "Null"值?

标签 java

下面的 map ,有两个键值对作为字符串,编写一个逻辑来过滤来自 map 的所有空值而不使用任何外部API?

除了遍历整个 map 并过滤掉值(遍历整个 map 并获取条目对象并丢弃这些对)之外,还有其他方法吗?

        Map<String,String> map = new HashMap<String,String>();

        map.put("1", "One");
        map.put("2", "Two");
        map.put("3", null);
        map.put("4", "Four");
        map.put("5", null);
        //Logic to filer values
        //Post filtering It should print only ( 1,2 & 4 pair )  

最佳答案

您可以使用 Java 8 方法 Collection.removeIf为此目的:

map.values().removeIf(Objects::isNull);

这删除了所有为空的值。

Online demo

这是因为为 HashMap 调用 .values() 会返回一个集合,该集合将修改委托(delegate)给 HashMap 本身,这意味着我们对 removeIf() 的调用> 实际上改变了 HashMap(这不适用于所有 java Map)

关于java - 如何从 HashMap<String, String> 中过滤 "Null"值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35863581/

相关文章:

java - 使用 Java 启动和停止专用 AWS 实例

java - 如何分发 AWTUtilities

java - 是否可以在 Java 中交换两个变量?

java - 使用浏览器获取请求发送 JWT token

java - 比较两个嵌套的 HashMap

java - PDF文档可以包含 "unreachable"内容吗?

java - 没有内部类的 Json Jackson 反序列化

java - 如何将 GPS 坐标从一部 Android 手机发送到另一部?

java - Camel 文件路由不会从绝对 Uri 复制文件

java - Camunda 在启动共享流程定义时设置租户 ID