我正在尝试使用Java 8流而不是传统的for循环进行此迭代。
我有一个对象列表,List<Obligation>
其中Obligation有List个String。
Obligation 包含类似
f1和f2类型String,
和
f3 类型的 List<String>
我要实现的是Map<String, List<Obligation>>这样,String在key中使用的Map是List<String>每个Obligation内部出现的每个值List<Obligation>
这是代码在传统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); …Run Code Online (Sandbox Code Playgroud) 我有2个List
List<Obligation>,List<ObligationStatus>
结构如下:
public class Obligation {
private String topic;
private String status;
private String comment;
private String text;
}
Run Code Online (Sandbox Code Playgroud)
和
public class ObligationStatus {
private String topic;
private String status;
private String comment;
}
Run Code Online (Sandbox Code Playgroud)
status并且comment里面List<Obligation>的null所有元素,
topic填充在这两个list
我想设置status并comment从每个元素List<ObligationStatus>到的每个元素List<Obligation>基础上topic。
// this is what i have tried, and is working fine
obList.stream().forEach(ob -> {
osList.stream().forEach(os -> {
if (ob.getTopic().equalsIgnoreCase(os.getTopic())) { …Run Code Online (Sandbox Code Playgroud)