我有一个 HashMap
,其中 String
作为键类型,String[]
作为值类型。
我希望能够更改部分值(String
数组)。
我使用此 HashMap 存储文件内容,将文件名保存为键,将其内容保存为值 (String[]
)。
我已经成功收集了这个HashMap的所有数据。我想要值(value) 以这种方式显示:
Key: alert
Value:
0-=Rule_Name,Configuration_Set_ID,Alert_UID,Headline,Create_DateTime
1-f5_high_compression_profile,,211,61b6cc42-0b32-4bd9-a3be-a98d7144ca85,Compression profile gzip level too high,1565003688537
2-f5_automap_enabled,407,0b380e7d-22f9-40c2-8277-3a5ed2ea7116,Automap enabled,1565003696956
我想将字符串中的epochtime
值替换为Date
,对于每个记录(纪元),使用此约定yyyy/MM/dd HHmmss
文件中的时间可能有所不同)。
public void createHashMapWithAlertCSVContent() throws Exception {
for(String item: lstServer) {
String[] contentCSVStr=
CmdHelper.Remote.File.cat(SERVER,INDENI_INSIGHT_PATH +
"/"+item).split("\n");
mapServer.put(FileUtil.removeExtension(item), contentCSVStr);
}
if(mapServer.containsKey("job")) {
mapServer.remove("job");
Assert.assertEquals(mapServer.size()-1, lstServer.size());
} else {
Assert.assertEquals(mapServer.size(), lstServer.size());
}
mapServer.entrySet().forEach(entry-> {
System.out.println(entry.getKey() + " " +
entry.getValue());
});
}
我期望发生的情况是字符串数组中的任何纪元时间条目都将替换为 yyyy/MM/dd HHmmss 约定。
我有这个字符串 f5_high_compression_profile,,211,61b6cc42-0b32-4bd9-a3be-a98d7144ca85,压缩配置文件 gzip 级别太高,1565003688537
。
我想将 1565003688537
更改为 yyyy/MM/dd HHmmss
约定。
1565003688537
可能不是相同的值,因此它必须能够处理该问题。
我想将ecpoh时间的每个条目更改为日期格式值。
最佳答案
您可以通过map.get(key)读取值,然后对其进行编辑,然后使用map.put(key, value)再次放置它。
如果值是可变类型,例如。 String[] 那么你可以直接在这个对象上进行修改,因为映射引用了这个对象并且不保存副本。 例如。
String[] value = map.get(key);
value[0] = "new String";
如果你想改变 String[] 的大小,那么你需要创建新列表并将其放在相同的键下以替换以前的值,或者你可以更改类型以使用 List 而不是 String[] ,这样它修改起来会更容易。
关于java - 使用java更改HashMap中的部分值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57357710/