如何从这些对象的列表中获取对象拥有的映射作为属性

发布于 2025-01-19 18:02:38 字数 683 浏览 0 评论 0原文

我有一个 BOLReference 对象,如下所示:

private String ediTransmissionId;
private List<WorkflowExceptions> workflowExceptions;

内部 WorkflowExceptions 如下所示:

private String category;
private Map<String,String> businessKeyValues;

我想获取特定的 Map <基于某些过滤器的 WorkflowExceptions列表 中的 em>businessKeyValues。我怎样才能这样做呢?

        Map<String,String> bKeyMap = bolRef.get(0).getWorkflowExceptions()
            .stream().filter(wk->wk.getBusinessKeyValues().containsKey("ABC123"));

I have an BOLReference object as follows:

private String ediTransmissionId;
private List<WorkflowExceptions> workflowExceptions;

And the inner WorkflowExceptions looks like below:

private String category;
private Map<String,String> businessKeyValues;

I want to get a particular Map<String,String> businessKeyValues from the list of WorkflowExceptions based on some filters. How can I do so?

        Map<String,String> bKeyMap = bolRef.get(0).getWorkflowExceptions()
            .stream().filter(wk->wk.getBusinessKeyValues().containsKey("ABC123"));

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

り繁华旳梦境 2025-01-26 18:02:38

为了获取包含某个keyma​​p businessKeyValues,首先需要应用map() 操作从 WorkflowExceptions 对象中提取map

然后应用 filter() 操作,就像您在代码中所做的那样。 findFirst()返回流中第一个遇到的元素)作为终端操作。

方法 findFirst() 返回一个可选对象,因为结果可能存在于流中,也可能不存在。 可选类为您提供了多种方法,允许根据您的需要以不同的方式处理结果不存在的情况。下面我使用了 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());

In order to obtain the map businessKeyValues that contains a certain key, first, you need to apply map() operation to extract the map from a WorkflowExceptions object.

Then apply filter() operation as you've done in your code. And findFirst() (which returns the first encountered element in the stream) as a terminal operation.

Method findFirst() returns an optional object, because the result may or may not be present in the stream. Optional class offers you a wide variety of methods that allow to treat the situation when result is not present in different ways depending on your needs. Down below I've used orElse() method that'll provide an empty map if result wasn't found.

Other options you might consider: orElseThrow(), orElseGet(), or() (in conjunction with other methods).

Map<String,String> bKeyMap = bolRef.get(0).getWorkflowExceptions()
                .stream()
                .map(WorkflowExceptions::getBusinessKeyValues)
                .filter(bkv -> bkv.containsKey("ABC123"))
                .findFirst()
                .orElse(Collections.emptyMap());
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文