如何使用 Java 8 个流 return 可选字符串

How to return Optional String using Java 8 streams

此代码应 return Optional 给定的字符串 siteUrl 包含预定义对列表中的键(否则 Optional.empty())。

这里有比使用new Pair(null, null)更好的方法吗?或者改变整个表达式?

static Optional<String> get(String siteUrl) {
    return Optional.ofNullable(URL_TO_ENVIRONMENT
            .stream()
            .filter(p -> siteUrl.contains(p.getKey()))
            .findFirst().orElse(new Pair(null, null)).getValue());
}

private static final List<Pair> URL_TO_ENVIRONMENT = buildList();

private static List<Pair> buildList() {
    return Arrays.asList(
            new Pair("aaa.mysite.com", "aaa_something"),
            new Pair("bbb.mysite.com", "bbb_something"),
            new Pair("ccc.mysite.com", "ccc_comething"));
}
return URL_TO_ENVIRONMENT.stream()
    .filter(p->siteUrl.contains(p.getKey()))
    .map(Pair::getvalue)
    .findFirst();

您是否特别需要第一场比赛?如果您只想要任何匹配项,请使用 findAny 而不是 findFirst.