Java HashMap如何获取未链接到HashMap的键集?

时间:2018-03-28 18:25:40

标签: java hashmap

我有一个存储需要更改的数据的HashMap。我需要弄清楚HashMap中有多少个字段,而不是“评论”和“调试”。我的解决方案是简单地获取keySet,并删除我不想计算的列,如下所示:

// Create and populate the HashMap
HashMap<String, String> updates = new HashMap<>();
makeUpdates(updates);
if (somecondition) {
    updates.put("comments", commentUpdater("Some Comment"));
}
updates.put("debug", getDebugInfo());

// Get the updated keys
Set<String> updatedFields = updates
updatedFields.remove("comments");
updatedFields.remove("debug");
System.out.println("The following " + updatedFields.size() + 
    " fields were updated: " + updatedFields.toString());

问题当然是从集合中删除“comments”和“debug”也会将它们从HashMap中删除。如何断开此链接,或获取未链接到HashMap的集合的副本?

2 个答案:

答案 0 :(得分:3)

创建副本

resource "aws_db_instance" "mydb" {
  # ...

  provisioner "remote-exec" {
    inline = [
      "chmod +x script.sql",
      "script.sql args",
    ]
  }
}

现在,您可以从Set<String> updatedFields = new HashSet<>(updates.keySet()); 中删除不会影响updatedFields地图的字符串。

或者@Elliott Frisch提到,你可以过滤它

updates

答案 1 :(得分:1)

创建一个新的HashSet并使用HashMap的{​​{1}}元素初始化它:

keySet()