java - 将代码从 HashMap 转换为 ArrayList

标签 java arraylist hashmap

我是 java 的新手,想知道如何将以下代码从使用名为 floorsMapHashMap 转换为使用 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/

相关文章:

java - 使用 for 循环打印字母表。为什么我必须显式地将字符 [] 转换为字符串?

java - 如何将对象添加到 JSONArray

java - 在一个巨大的列表中查找一个元素

python - 如何应用哈希算法而不是 for 循环来降低 python 中的时间复杂度?

java - hibernate : SetMaxResults not working with java. util.Map

java - 如何从 ArrayList 中删除重复的元素?

java - 使用人类语言词典动态填充 HashMap 以进行文本分析

java - 如何打印数组中出现次数最多的 5 个数字?

java - 获取 RecyclerView.ViewHolder 中的上下文

c# - 在多行文本框中显示 ArrayList 条目