如何在List <map <string,object =“”>&gt;中获取最大值在Java8

时间:2017-04-24 05:51:57

标签: java java-8

我正试图在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中做同样的事情,但我无法获得最大值。

1 个答案:

答案 0 :(得分:10)

如果预期值为整数,我会将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); 的价值:

{{ csrf_field() }}