我有一个字符串对象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
来处理不同对象的方法?
答案 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
值!