[英]For each loop is iterating, and everytime returning the last iteration list as result
[英]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.