我有一个跟踪主机、文件和每个文件的一部分的容器:
private static Map<String, Map<String, ArrayList<FileShard>>> globalFileShardMap = new HashMap<String, Map<String, ArrayList<FileShard>>>();
我想在其中添加一个新条目,并且这样做是这样的:
// filename and shard are known
ArrayList<FileShard> initShard = new ArrayList<FileShard>();
initShard.add(shard);
Map<String, ArrayList<FileShard>> initMap = new HashMap<String, ArrayList<FileShard>>();
initMap.put(filename,initShard);
globalFileShardMap.put(Node.getLocal().getHostname(), initMap);
有没有办法将其压缩为一行,并将新的内部 Map 作为参数传递给 globalFileShardMap.put
?
最佳答案
这是一种在一行中完成此操作而无需创建任何匿名类的方法。
globalFileShardMap.put(Node.getLocal().getHostname(),
new HashMap<>(Collections.singletonMap(filename,
new ArrayList<>(Collections.singletonList(shard)))));
钻石需要 Java 7 <>
。
如果您实际上并不需要 HashMap
和一个ArrayList
(即任何旧的 Map
和 List
都可以)您可以删除 new HashMap<>
和new ArrayList<>
.
关于java - 如何传递新的单值映射作为参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33591011/