我有一个存储需要更改的数据的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的集合的副本?
答案 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()