我有以下课程
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替换上面的循环吗?
答案 0 :(得分:4)
此处您不需要flatMap
。只需使用filter
找到匹配的Customer
和map
,即可获得CustomerId
的{{1}}。
Customer