java - 如何避免嵌套循环

标签 java data-structures hashmap nested-loops

我正在努力实现以下目标

public class MyObject {
    Map<String, String> myMap;
}

public class MyOtherObject {
    List<MyObject> myObjects;
}

我希望能够执行以下操作

for (MyObject myObject: myObjects) {
    Map<String,String> newMap = new Hashmap<String,String>();

    for (Map.Entry<String, String> entry : myObject.getMyMap.entrySet() {
        newMap.put(entry.key + "a" , entry.value)
    }
}

如何避免这种嵌套循环?

最佳答案

  • 对于您当前的解决方案,您需要移动 newMap 在循环外部声明,否则您将在循环的每次迭代中创建一个新映射,并且该映射不会包含您期望的结果。
  • 您的 map 实例化也有拼写错误,请将 Hashmap 更改为 HashMap

为了避免嵌套循环,您可以创建 entrySet 的流实例,然后使用 collect 对流执行归约操作。

Map<String, String> copy = myObject.getMyMap.entrySet()
            .stream()
            .collect(Collectors.toMap(p -> p.getKey() + "a", Map.Entry::getValue));

如果您想将所有映射从指定 map 复制到另一个 map ,那么正如 svasa 在评论中建议的那样,您可以执行以下操作:

newMap.putAll(myObject.getMyMap.entrySet().stream().collect(Collectors.toMap(p -> p.getKey() + "a", Map.Entry::getValue)));

关于java - 如何避免嵌套循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44314202/

相关文章:

java - 导出为 pdf 时出现 NoClassDefFoundError

java - 如何制作一个在给定方法中使用的列表

java - JButton 定位问题

c - 将递归定义的结构转换为 C 接口(interface)的 Julia

c++ - 比较两个字母数字字符串

java - 为什么下面的程序中 HashMap 类的 containsValue 方法返回 False?

java - 如何使用 Java 中的 HashMap 将两个文件中的困惑单词与字典单词进行比较?

java - 有限制的运行配置

algorithm - 具有 O(1) 索引和 O(1) prev 和 next 的稀疏数组

java - ExpandableListView Android 中的多个 Textview