我正在学习Java Streams,并希望用java 8功能替换下面的代码。
我有一个带有X和Y坐标以及方向箭头的点列表:
final List<PathStep> path;
我希望将上面的列表转换为地图的映射,如下面的Java 7代码:
final Map<Integer, Map<Integer, Direction>> map = new HashMap<>();
for (final PathStep pathStep : path) {
final Coordinate coordinate = pathStep.getCoordinate();
final int y = coordinate.getY();
if (!map.containsKey(y)) {
map.put(y, new HashMap<>());
}
final Map<Integer, Direction> mapY = map.get(y);
mapY.put(coordinate.getX(), pathStep.getDirection());
}
我能够使用stream.filter()和stream.map功能,但我无法用java 8功能替换上面的代码。
任何指针都会受到高度赞赏!
答案 0 :(得分:1)
您可以使用items = ['a', 'b', 'c','d']
from itertools import permutations
for p in permutations(items):
print(p)
items = ['a', 'b', 'c','f']
from itertools import permutations
for p in permutations(items):
print(p)
和嵌套groupingBy()
进行收集。假设toMap()
是path
:
Collection<PathStep>