在不使用instanceof运算符的情况下在Java中打印嵌套地图

时间:2019-01-23 16:42:02

标签: java

我有一个字符串对象Map:

Map<String, Object> someMap

映射可以包含map,null,String或任何其他值作为值列表。

我想将我的地图打印为一张平面地图。

例如:

输入图:

  

{“ a”:“ a1”,“ b”:“ b1”,“ c”:“ c1”,   “ d”:{“ e”:“ e1”,“ f”:{“ g”:“ g1”},“ h”:“ h1”},“ i”:“ i1”,“ j”:[{ “ k”:“ k1”},{“ l”:“ l1”}],“ m”:“ m1”,“ n”:null}


输出字符串:

  

“ a =” a1“ b =” b1“ c =” c1“ e =” e1“ g =” g1“ h =” h1“ i =” i1“ k =” k1“ l =” l1“   m =“ m1”“

是否有一种无需使用instanceof来处理不同对象的方法?

1 个答案:

答案 0 :(得分:3)

不知道这是否正是您要的内容。 根据定义,每个Object必须实现toString()。 仅有一种特殊情况:toString导致NullPointerException值为null

@Test
public void testId(){
    Map<String, Object> someMap = new HashMap<>();
    someMap.put("1", null);
    someMap.put("2", asList(1,2,3,4));
    someMap.put("3", 3);
    someMap.put("4", "Hello World! Greetings from Germany <3");

    someMap.entrySet().stream().filter(entry -> entry.getValue() != null)
            .forEach(entry -> System.out.println(entry.getKey()
                    .concat("=")
                    .concat(entry.getValue().toString())));
}

导致:

2=[1, 2, 3, 4]
3=3
4=Hello World! Greetings from Germany <3

在这种情况下,将过滤null值!