我是 java 的新手,想知道如何将以下代码从使用名为 floorsMap
的 HashMap
转换为使用 ArrayList
调用了 floorsArray
。
void randomizeQueues(String flag) {
double num = (flag.equals("enforce")) ? 0.99 : Math.random();
if (num > 0.5)
floorsMap.values().forEach(Floor::randomizeDestinations);
}
最佳答案
forEach
是终端操作;它什么都不返回;因此调用一个没有副作用的方法是一个什么都不做的操作。
我认为您正在寻找一系列操作,这些操作将结果转换并滚动到新的集合类型中。流 API 用于执行此操作:
List<Floor> randomizedFloors = floorsMap.values().stream()
.map(Floor::randomizeDestinations)
.collect(Collectors.toList());
编辑:
也许 randomizeDestinations
随机化“就地”并返回 void。在那种情况下,除非您有办法克隆 Floor 对象,否则您无法保持 map 完好无损,然后拥有一个包含随机目的地的列表,而您必须明确地创建该对象。你可以这样做:
List<Floor> randomizedFloors = floorsMap.values().stream().map(floor -> {
Floor clone = floor.makeACopy(); // you must write this
clone.randomizeDestinations();
return clone;
}).collect(Collectors.toList());
关于java - 将代码从 HashMap 转换为 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60915433/