在Java中从LinkedListMultimap中删除'null'

1tu0hz3e  于 2023-01-01  发布在  Java
关注(0)|答案(2)|浏览(132)

我有下面的代码,我想删除'空'值时,打印或保存在一个文件中。
有时候我不需要给变量传递任何值。所以,在这种情况下,我需要打印键,但是不需要任何'null'。我该怎么做呢?
我必须使用LinkedListMultimap,因为我可能有重复的键,并希望保持进入Map的顺序。

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]
lymnna71

lymnna711#

我想在打印或保存到文件中时删除null
在集合中存储和保留null没有任何意义(* null-表示没有数据,它不能给予任何有用的信息 *),它是一个反模式
要从Map中删除null值,请使用removeIf()对值集合执行批量删除。
与用标准map获取集合值一样,可以使用values()方法。如文档中所指定的,它返回一个覆盖map值的 * 视图 *,而不是一个独立的集合。并且对它所做的所有更改,都将反映在map中。
对返回集合的更改将更新基础多Map,反之亦然。
这就是它可以做到的。

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

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

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

4dbbbstv2#

您可以使用ternary operator

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

相关问题