小编Dap*_*gma的帖子

Java 8嵌套流:在最后一个流中返回一个值

可以将此问题视为基于java 8嵌套流

假设我有一个BatchBaskets的ItemS:

public class Batch {
    private List<Basket> baskets;
}

public class Basket {
    private List<Item> items; 
}

public class Item {
    private String property;
    private int value;
}
Run Code Online (Sandbox Code Playgroud)

我想用Java 8流重写这个方法.

public class SomeService {
    public int findValueInBatch(Batch batch) {
        for (Basket basket : batch.getBaskets()) {
            for (Item item : basket.getItems()) {
                if (item.getProperty().equals("someValue") {
                    return item.getValue();
                }
            }
        }
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

我想去的第一步:

public int findValueInBatch(Batch batch) {
    for …
Run Code Online (Sandbox Code Playgroud)

java lambda java-8 java-stream

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

遍历嵌套集合以找到匹配条件的第一个子子子元素

我有一个带有其他对象列表的对象,每个其他对象都有一个列表等。我需要在层次结构中找到层次结构中具有匹配某个值的属性的第一个(也是唯一的)最后一个元素。看到我现在的代码会更清楚:

    @Override
public Poste findByNumeroAndMillesime(String numero, Millesime millesime) {
    return millesime
            .getDivisions()
            .stream()
            .filter(
                    division -> division
                    .getGroupes()
                    .stream()
                    .filter(
                          groupe -> groupe
                          .getClasses()
                          .stream()
                          .filter(
                                  classe -> classe
                                  .getSousClasses()
                                  .stream()
                                  .filter(
                                          sousClasse -> sousClasse
                                          .getPostes()
                                          .stream()
                                          .filter(poste -> numero.equals(poste.getNumero()))
                                          .findFirst()
                                          .get()
                                          ))));

}
Run Code Online (Sandbox Code Playgroud)

我需要返回与作为参数传递的数字相同的 Poste。

提前致谢。

foreach java-8 java-stream

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

标签 统计

java-8 ×2

java-stream ×2

foreach ×1

java ×1

lambda ×1