我希望用Java 8 Stream而不是传统的for循环来进行这个迭代。我有一个对象列表
我想要实现的是一个
这是传统 for 循环的代码示例:
List<Obligation>
,而 Obligation
中包含一个 List
,其中还有多个 String
。
Obligation
包含以下字段:
f1
和 f2
是 String
类型,
f3
是 List<String>
类型我想要实现的是一个
Map<String, List<Obligation>>
,使得每个值在 List<String>
中的 Obligation
都可以用作 Map
的键中的String
。这是传统 for 循环的代码示例:
// newly initialized Map
Map<String, List<Obligation>> map = new LinkedHashMap<String, List<Obligation>>();
// assume the list is populated
List<Obligation> obligations = someMethod();
for(Obligation obligation : obligations) {
for(String license : obligation.getLicenseIDs()) {
if(map.containsKey(license)) {
map.get(license).add(obligation);
} else {
List<Obligation> list = new ArrayList<Obligation>();
list.add(obligation);
map.put(license, list);
}
}
}