我有一个字符串对象的映射:
Map<String, Object> someMap
映射可以包含值列表、映射、null、字符串或任何其他值。
我想将我的 map 打印为一张平面 map 。
例如:
输入 map :
{"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
处理不同对象的情况下做到这一点?
最佳答案
不知道这是否正是您要找的。
根据定义,每个对象
都必须实现toString()
。
只有一种特殊情况:toString
会导致 null
值出现 NullPointerException
。
@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
值将被过滤!
关于java - 在java中打印嵌套映射而不使用instanceof运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54331884/