簡體   English   中英

使用Maps.uniqueIndex和Guava時拒絕值

[英]Reject values while using Maps.uniqueIndex with 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);

我知道我可以使用多圖,因為許多語言環境可以使用相同的語言,但它實際上符合我的需要。

例如,我希望沒有任何語言的語言環境不在輸出映射中。 因為我不能返回null或類似的東西,我將使用不相關語言的語言環境重定向到鍵“NO_LANGUAGE”。 問題是仍然可以檢索該值。

是否有某種“/ dev / null”映射鍵,或者我是否總是需要在使用謂詞之前/之后進行一些過濾?

番石榴貢獻者在這里。

不。 做一個過濾器......或者可能更有效,只需自己構建地圖,不要完全使用Maps.uniqueIndex 無論如何,它可能更簡單,也更短。

我想補充一點,如果這個問題得到解決,你將能夠做到:

ImmutableMap<String, Locale> index = FluentIterable.from(availableLocales)
    .filter(NOT_BLANK_LANGUAGE)
    .uniqueIndex(GET_LANGUAGE);

public static Predicate<Locale> NOT_BLANK_LANGUAGE = new Predicate<Locale>() {
  @Override
  public boolean apply(Locale input) {
    return !StringUtils.isBlank(input.getLanguage());
  }
};

public static Function<Locale, String> GET_LANGUAGE = new Function<Locale, String>() {
  @Override
  public String apply(Locale input) {
    return input.getLanguage();
  }
};

使用Java 8 lambdas,它將更加簡潔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM