【问题标题】:Conversion of code from a HashMap to an ArrayList将代码从 HashMap 转换为 ArrayList
【发布时间】:2020-07-09 22:18:36
【问题描述】:

我是 Java 新手,想知道如何将以下代码从使用名为 floorsMapHashMap 转换为使用名为 floorsArrayArrayList

void randomizeQueues(String flag) {
    double num = (flag.equals("enforce")) ? 0.99 : Math.random();
    if (num > 0.5)
        floorsMap.values().forEach(Floor::randomizeDestinations);
}

【问题讨论】:

  • 你的意思是像floorsArray.forEach(Floor::randomizeDestinations);

标签: java arraylist hashmap


【解决方案1】:

forEach是终端操作;它什么也不返回;因此,调用没有副作用的方法是一种无所事事的操作。

我认为您正在寻找一系列操作来转换然后将结果滚动到新的集合类型中。流 API 用于执行此操作:

List<Floor> randomizedFloors = floorsMap.values().stream()
    .map(Floor::randomizeDestinations)
    .collect(Collectors.toList());

编辑:

也许randomizeDestinations 随机化“就地”并返回 void。在这种情况下,除非您有办法克隆 Floor 对象,否则您无法保持地图完好无损,然后拥有一个包含随机目的地的列表,而您必须明确地制作该对象。你可以这样做:

List<Floor> randomizedFloors = floorsMap.values().stream().map(floor -> {
    Floor clone = floor.makeACopy(); // you must write this
    clone.randomizeDestinations();
    return clone;
}).collect(Collectors.toList());

【讨论】:

  • 我在想,randomizeDestinations() 会返回一个 Floor 对象吗?
  • 无论如何..这个问题需要更清楚!
猜你喜欢
  • 2017-08-14
  • 2012-06-02
  • 2011-12-09
  • 1970-01-01
  • 2011-07-24
  • 1970-01-01
  • 1970-01-01
  • 2017-07-05
  • 1970-01-01
相关资源
最近更新 更多