如何使用Java 8流返回可选字符串

时间:2015-05-30 17:33:05

标签: java java-8 java-stream optional

当给定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"));
}

1 个答案:

答案 0 :(得分:4)

return URL_TO_ENVIRONMENT.stream()
    .filter(p->siteUrl.contains(p.getKey()))
    .map(Pair::getvalue)
    .findFirst();

你特别需要第一场比赛吗?如果您只是想要匹配,请使用findAny代替findFirst