使用Maps.uniqueIndex和Guava时拒绝值

Seb*_*ber 2 java functional-programming guava

我想知道在使用Guava方法时是否可以丢弃一些值.

public static Function<Locale, String> GET_LANGUAGE = new Function<Locale, String>() {
    @Override
    public String apply(Locale input) {
        return StringUtils.isBlank(input.getLanguage()) ? "NO_LANGUAGE" : input.getLanguage();
    }
};

Maps.uniqueIndex(availableLocales, GET_LANGUAGE);
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用多图,因为许多语言环境可以使用相同的语言,但它实际上符合我的需要.

例如,我希望没有任何语言的语言环境不在输出映射中.由于我无法返回null或类似的东西,我将使用不相关语言的语言环境重定向到键"NO_LANGUAGE".问题是仍然可以检索该值.

是否有某种"/ dev/null"映射键,或者我是否总是需要在使用谓词之前/之后进行一些过滤?

Lou*_*man 7

番石榴贡献者在这里.

不.做一个过滤器...或者可能更有效,只需自己构建地图,不要完全使用Maps.uniqueIndex.无论如何,它可能更简单,也更短.