如何从这些对象的列表中获取对象拥有的映射作为属性
How to get a Map owned by an Object as an attribute from a List of these objects
我有一个 BOLReference
对象如下:
private String ediTransmissionId;
private List<WorkflowExceptions> workflowExceptions;
内部 WorkflowExceptions
如下所示:
private String category;
private Map<String,String> businessKeyValues;
我想从列表中获取特定的Map<String,String>
businessKeyValues WorkflowExceptions
基于一些过滤器。我该怎么做?
Map<String,String> bKeyMap = bolRef.get(0).getWorkflowExceptions()
.stream().filter(wk->wk.getBusinessKeyValues().containsKey("ABC123"));
为了获取map businessKeyValues
包含某个key, 首先,您需要应用 map()
操作从 WorkflowExceptions
对象中提取 map。
然后像您在代码中所做的那样应用 filter()
操作。并且findFirst()
(流中第一个遇到的元素returns)作为终端操作。
方法 findFirst()
returns 一个 可选 对象,因为结果可能存在也可能不存在于流中。 Optional
class 为您提供了多种方法,可以根据您的需要以不同的方式处理结果不存在的情况。在下方,我使用了 orElse()
方法,如果未找到结果,该方法将提供 空映射 。
您可能考虑的其他选项:orElseThrow()
、orElseGet()
、or()
(结合其他方法)。
Map<String,String> bKeyMap = bolRef.get(0).getWorkflowExceptions()
.stream()
.map(WorkflowExceptions::getBusinessKeyValues)
.filter(bkv -> bkv.containsKey("ABC123"))
.findFirst()
.orElse(Collections.emptyMap());
我有一个 BOLReference
对象如下:
private String ediTransmissionId;
private List<WorkflowExceptions> workflowExceptions;
内部 WorkflowExceptions
如下所示:
private String category;
private Map<String,String> businessKeyValues;
我想从列表中获取特定的Map<String,String>
businessKeyValues WorkflowExceptions
基于一些过滤器。我该怎么做?
Map<String,String> bKeyMap = bolRef.get(0).getWorkflowExceptions()
.stream().filter(wk->wk.getBusinessKeyValues().containsKey("ABC123"));
为了获取map businessKeyValues
包含某个key, 首先,您需要应用 map()
操作从 WorkflowExceptions
对象中提取 map。
然后像您在代码中所做的那样应用 filter()
操作。并且findFirst()
(流中第一个遇到的元素returns)作为终端操作。
方法 findFirst()
returns 一个 可选 对象,因为结果可能存在也可能不存在于流中。 Optional
class 为您提供了多种方法,可以根据您的需要以不同的方式处理结果不存在的情况。在下方,我使用了 orElse()
方法,如果未找到结果,该方法将提供 空映射 。
您可能考虑的其他选项:orElseThrow()
、orElseGet()
、or()
(结合其他方法)。
Map<String,String> bKeyMap = bolRef.get(0).getWorkflowExceptions()
.stream()
.map(WorkflowExceptions::getBusinessKeyValues)
.filter(bkv -> bkv.containsKey("ABC123"))
.findFirst()
.orElse(Collections.emptyMap());