java - 如何传递新的单值映射作为参数?

标签 java arrays dictionary

我有一个跟踪主机、文件和每个文件的一部分的容器:

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 (即任何旧的 MapList 都可以)您可以删除 new HashMap<>new ArrayList<> .

关于java - 如何传递新的单值映射作为参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33591011/

相关文章:

java - 每次做出错误的猜测时,我都需要让我的程序向 GUI 添加一个 .jpg。

javascript - 如何修复 for 循环在 JavaScript 中无法在字符串数组中获取结果

php - 用特定变量替换 php echo 输出

python - "frozen dict"是什么?

python - 如何对字典列表求和

javascript - 通过搜索某个值返回数组中的 Dictionary 对象

java - 代码可以在电脑上运行,但不能在手机上运行

java - 将 Spring-wired 库与 robotsframework 结合使用

ruby - 从数组ruby删除所有元素并引发错误

java - 如何在EXTJS网格中插入数据?