java - 在java中打印嵌套映射而不使用instanceof运算符

标签 java

我有一个字符串对象的映射:

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/

相关文章:

java - 使用 Criteria API 加入,在实体映射 "one to one"中

java - 如何在 Java 中使用密码学?

java - Hazelcast 锁不提供同步

java - wso2 身份服务器 oauth2 请求返回 HTTP 错误 415

Java 使用泛型

java - hibernate 4.3.5 与同学讨论 glassfish 4 typeresolver 错误

java - ubuntu/unity 的焦点问题

java - 我无法引用类(class) - 某处出现问题

java - 即使抛出异常,如何保持函数运行?

java克隆()与数组