【问题标题】:Is there JavaScript Object.assign() analogue in Java?Java 中是否有 JavaScript Object.assign() 类似物?
【发布时间】:2019-12-21 17:38:33
【问题描述】:

因此,在 JavaScript 中 Object.assign() 可以“合并”两个(或更多我知道的)对象。

例如,我们有{a: "b", c: "d"}{c: "a", p: "e"}。合并后我们会得到一个新对象{a: "b", c: "a", p: "e"}。 如果两个对象都有具有相同键的子对象,则该函数将合并子对象。

我如何在 Java 中做到这一点?

【问题讨论】:

  • 即使你引用了 JavaScript 的 Object.assign,问题不在于 JavaScript,所以 javascript 标签不合适。
  • 你没有展示你的JS代码,Object.assign()有一些微妙之处

标签: java object merge


【解决方案1】:

Java 与 JavaScript 不同,它是严格类型的。您不能创建临时对象,例如问题中的示例。

在您想要按照这些方式做某事的情况下,您可以使用Map 实现(HashMap 和类似的)。 Map 有几种做事方式与Object.assign 类似,比如putAll

Map<String, String> target = new HashMap<>();
target.putAll(source1);
target.putAll(source2);

或者

Map<String, String> target = new HashMap<>(source1);
target.putAll(source2);

完整示例:

import java.util.*;

public class Example {
    public static void main(String args[]){
        Map<String, String> source1 = new HashMap<>();
        source1.put("a", "b");
        source1.put("c", "d");
        Map<String, String> source2 = new HashMap<>();
        source2.put("c", "a");
        source2.put("p", "e");

        Map<String, String> target = new HashMap<>();
        target.putAll(source1);
        target.putAll(source2);

        for (var entry : target.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多