List<Map<String, BigDecimal>> 获取集合指定key对应的最大value
最近做一个需求:返回的一个列表集合是map集合,要获取一个列(map的key)的最大的值
直接上代码,如下:
要获取列表中,key为2的最大值
package com.zjy.thread.test;
import java.math.BigDecimal;
import java.util.*;
public class TestController {
public static void main(String[] args) {
List<BigDecimal> bigDecimalList = new ArrayList<BigDecimal>();
List<Map<String, BigDecimal>> list = getList();
for (Map<String, BigDecimal> map : list) {
BigDecimal o = map.get("2");
bigDecimalList.add(o);
}
// 获取最大值
BigDecimal maxValue = getMaxValue(bigDecimalList);
System.out.println(maxValue);
}
/**
* 模拟封装一个list集合
* @return
*/
public static List<Map<String, BigDecimal>> getList(){
List<Map<String, BigDecimal>> list = new ArrayList<>();
Map<String, BigDecimal> map1 = new HashMap<>();
map1.put("1",new BigDecimal("10"));
map1.put("2",new BigDecimal("20"));
map1.put("3",new BigDecimal("30"));
map1.put("4",new BigDecimal("40"));
list.add(map1);
Map<String, BigDecimal> map2 = new HashMap<>();
map2.put("1",new BigDecimal("100"));
map2.put("2",new BigDecimal("200"));
map2.put("3",new BigDecimal("300"));
map2.put("4",new BigDecimal("400"));
list.add(map2);
Map<String, BigDecimal> map3 = new HashMap<>();
map3.put("1",new BigDecimal("110"));
map3.put("2",new BigDecimal("120"));
map3.put("3",new BigDecimal("130"));
map3.put("4",new BigDecimal("140"));
list.add(map3);
return list;
}
/**
* 获取list里的最大值
* @param bigDecimalList
* @return
*/
public static BigDecimal getMaxValue(List<BigDecimal> bigDecimalList) {
Optional<BigDecimal> bigDecimalMax = bigDecimalList.stream().max(BigDecimal::compareTo);
BigDecimal bigDecimal = bigDecimalMax.orElse(new BigDecimal("0"));
return bigDecimal;
}
}
测试:
测试OK!
欢迎大神指导,可以留言交流!
======================
本人原创文章,转载注明出入!
=================