簡體   English   中英

如何在列表中獲取最大值<map<string, object> > 在 Java8 </map<string,>

[英]How to get max value in List<Map<String, Object>> at Java8

我試圖在 Java 8 中獲得最大值。

它由List<Map<String,Object>>組成。

Java 8 前:

int max = 0;
for(Map<String, Object> map : list) {
    int tmp = map.get("A");
    if(tmp>max)
       max=tmp;
}

這將顯示最大數量的鍵“A”。

我試圖在 Java 8 中做同樣的事情,但我無法獲得最大值。

如果值預期為整數,我會將Map的類型更改為Map<String,Integer>

List<Map<String,Integer>> list;

然后你可以找到最大值:

int max = list.stream()
             .map(map->map.get("A"))
             .filter(Objects::nonNull)
             .mapToInt(Integer::intValue)
             .max()
             .orElse(someDefaultValue);

您可以使用getOrDefault而不是get來避免null值來縮短它:

int max = list.stream()
             .mapToInt(map->map.getOrDefault("A",Integer.MIN_VALUE))
             .max();
             .orElse(someDefaultValue);
int max = listMap.stream()                               
       .flatMap(c -> c.entrySet().stream()) 
       .max(Comparator.comparing(Map.Entry::getValue)).get().getValue();

暫無
暫無

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

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