我目前正在查看Javaslang库,我正在尝试将一些代码转换为Javaslang.
我目前有一些纯Java代码
Cell[][] maze; //from input
Map<Cell, Long> cellCounts = Stream.of(maze)
.flatMap(Stream::of)
.collect(groupingBy(c -> c, counting()));
Run Code Online (Sandbox Code Playgroud)
我正在考虑将其转换为Javaslang,因为我对图书馆感兴趣而且我只想玩它.
我试图做类似的事情,但转换为Javaslang地图而不是java.util.Map.
到目前为止我已经尝试了这个,但后来我陷入困境,因为我无法看到转换它的方法.
Array.of(maze)
.flatMap(Array::of)
Run Code Online (Sandbox Code Playgroud)
所以我有我的Cell对象列表,但我想弄清楚如何将其转换为javaslang.collection.Map
*编辑*
我已经看过将原始java.util.Map变为javaslang.collections.Hashmap
HashMap<Cell, Long> cellsCount = HashMap.ofEntries(cellCounts
.entrySet()
.toArray(new Map.Entry[0]));
Run Code Online (Sandbox Code Playgroud)
这仍然不符合Javaslang,但我会继续寻找.
免责声明:我是 Javaslang 的作者。
使用 Javaslang 实现它的最简单方法如下:
Map<Cell, Integer> cellCounts = Array.of(maze)
.flatMap(Array::of)
.groupBy(c -> c)
.mapValues(Array::length);
Run Code Online (Sandbox Code Playgroud)
这里Array和Map是从 导入的javaslang.collection。
请注意,您可以Array用任何其他Seq实现替代Set。
| 归档时间: |
|
| 查看次数: |
850 次 |
| 最近记录: |