簡體   English   中英

java 8中的迭代返回列表中的最后一個值

[英]Iteration in java 8 returning last value in list

顯然我不擅長 Java 8。有人能告訴我為什么我的集合在迭代過程中沒有保留我的所有值嗎? 如果我放置一個斷點,代碼會迭代但只返回最后一個值。

Set<Group> groups = new Hashset<>();
Group group = new Group();
List my = model.getValues();

list.stream().forEach(gr -> {
            group.setName(gr.getDescription());
            group.setDescription(gr.getDescription());

           groups.add(group); 
});

System.Out.Println(groups);

因為您是在 lambda 表達式之外創建它。 您需要在每次迭代中創建一個新實例,這應該有效:

Set<Group> groups = new Hashset<>();
List my = model.getValues();

list.stream().forEach(gr -> {
           Group group = new Group();
           group.setName(gr.getDescription());
           group.setDescription(gr.getDescription());

           groups.add(group); 
});

甚至更清潔使用map

Set<Group> groups = list.stream()
    .map(gr -> new Group(gr.getDescription(), gr.getDescription())))
    .collect(Collectors.toSet());

前提是有一個合適的兩參數構造函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM