小编aka*_*pti的帖子

使用流在Java 8中将List <Object>收集到Map <String,List <Object >>

我正在尝试使用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)

java java-8

4
推荐指数
1
解决办法
87
查看次数

使用Java 8流基于另一个List &lt;Object2&gt;填充List &lt;Object1&gt;

我有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)

java list java-8 java-stream

2
推荐指数
1
解决办法
94
查看次数

标签 统计

java ×2

java-8 ×2

java-stream ×1

list ×1