Java 8访问嵌套列表中的先前值

时间:2017-10-10 00:54:13

标签: java lambda java-8 java-stream

我有以下课程

class Customer {
  List<String> itemCodes;
  String customerId;
}

假设我有客户列表,我需要使用特定的itemCode搜索此列表中第一个客户的customerId。

我目前的做法如下

    for (Customer cust : Customers) {
            if (cust.getItemCodes() != null && cust.getItemCodes().contains("SPECIFIC_CODE")) {
                return cust.getCustomerId();
            }
}

我想使用Java8转换上面的循环

我现在能得到的最好的是

customers.stream().flatMap(cust -> cust.getItemCodes().stream()).filter(code -> code.equals("SPECIFIC_CODE")).findFirst();

但是这会将value作为项目代码本身返回给我。但我需要那个人的customerId。问题是,我不知道如何在这里访问lambda的先前值?

那么有什么方法可以用java8替换上面的循环吗?

1 个答案:

答案 0 :(得分:4)

此处您不需要flatMap。只需使用filter找到匹配的Customermap,即可获得CustomerId的{​​{1}}。

Customer