【问题标题】:Remove 'null' from LinkedListMultimap in Java从 Java 中的 LinkedListMultimap 中删除 \'null\'
【发布时间】:2022-12-29 00:26:22
【问题描述】:

我有以下代码,我想在打印或保存在文件中时删除“空”值。

有时我不必将任何值传递给变量。所以,在那些情况下,我需要打印密钥,但没有任何“空”。我怎样才能做到这一点?

我必须使用LinkedListMultimap,因为我可能有重复的键并且想保持进入地图的顺序。

public static void main(String[] args) {

    Multimap<String, String> data=LinkedListMultimap.create();
    data.put("NAME",getName());
    data.put("AGE",getAge());
    data.put("DEPARTMENT",getDepartment());

    data.forEach((key, value) -> System.out.println("[" + key + "]" + " " + value));

}

当前输出:-

[NAME] Joe
[AGE] 25
[DEPARTMENT] null

预期输出:

[NAME] Joe
[AGE] 25
[DEPARTMENT]

【问题讨论】:

  • if (value != null)

标签: java collections hashmap guava multimap


【解决方案1】:

您可以使用三元运算符

data.forEach((key, value) -> System.out.println("[" + key + "]" + " " + value != null ? value : "{ Put whatever default value you'd like here or leave empty }");

【讨论】:

  • 谢谢它的工作。该值需要放在括号中:- equityTrade.getEquityData().forEach((key, value) -> System.out.println("[" + key + "]" + " " + (value != null ? value : "")));
  • @Oasis001 查看下面我来自 Alexander Ivanchenko 的代码。使用函数式编程,速度更快。我是它的粉丝。但有些人认为我使用的方法更具可读性。所以由你决定:)
【解决方案2】:

我想在打印或保存在文件中时删除 null

在集合中存储和保留 null 没有任何意义(null - 代表没有数据,不能给出任何有用的信息), 这是一个反模式.

要从地图中删除 null 值 - 使用 removeIf() 对值集合执行批量删除。

除了使用标准映射来获取值的集合,您还可以使用values() 方法。如文档中所述,它返回一个看法超过地图的值而不是独立的集合。对它所做的所有更改都将反映在地图中。

对返回集合的更改将更新基础 多图,反之亦然。

这就是可以做到的。

Multimap<String, String> data = // initializing multimap

data.values().removeIf(Objects::isNull); // removing null values

data.forEach((k, v) -> System.out.println( ... )); // printin the Multimap

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多