如何使用 lambda 和过滤器简化此代码

问题描述 投票:0回答:1
   final List<String> resources = someSao.getResource()
            .stream()
            .filter(Resource::isPresentInDB)
            .map(Resource::getType)
            .toList();

    final String str = resources.contains("A") ?  "A" :  resources.get(0);

我知道应该有一种方法可以简化最后一行。如果 A 存在于过滤的资源列表中,我基本上尝试优先返回 A,如果 A 不存在,则返回它找到的第一个东西。 (找到第一个)。 有人可以帮我将两种不同的陈述合并为一个吗?

java-8 java-stream
1个回答
0
投票

你可以这样做:

final String str = someSao.getResource()
            .stream()
            .filter(Resource::isPresentInDB)
            .findFirst()
            .map(r -> r.getType().contains("A")? "A": r.getType())
            .orElse("A");
© www.soinside.com 2019 - 2024. All rights reserved.