【发布时间】:2017-06-01 17:57:59
【问题描述】:
我正在努力实现以下目标
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)
}
}
如何避免这种嵌套循环?
【问题讨论】:
-
你是在 java8 环境中运行的吗????
-
没有 java 7,但我会对 java 8 的解决方案感到好奇
-
顺便说一句,将
Map<String,String> newMap = new Hashmap<String,String>();移到 for 循环之外。您每次都在创建新地图! -
你无法避免嵌套循环。无论您如何实现这一点,都必须触摸每个地图中的每个键,因此您无法降低复杂性。但是,如果您只是讨厌嵌套,则可以将嵌套循环移动到私有实用程序函数中。您唯一的其他选择是编写 MyOtherObject 代码以在插入时进行转换,这样您就不必首先更改键。
-
不清楚是要为列表的每个对象创建一个新映射,还是要一个包含内部映射的所有条目并修改其键的单个映射
标签: java data-structures hashmap nested-loops