我们经常遇到需要从一个list map中获取最大的金额。
java
public static Map.Entry<String, BigDecimal> findMaxField(List<Map<String, Object>> listMap) {
String maxField = null;
BigDecimal maxValue = BigDecimal.valueOf(Double.MIN_VALUE);
for (Map<String, Object> map : listMap) {
for (Map.Entry<String, Object> entry : map.entrySet()) {
if (entry.getValue() instanceof BigDecimal) {
BigDecimal value = (BigDecimal) entry.getValue();
if (value.compareTo(maxValue) > 0) {
maxValue = value;
maxField = entry.getKey();
}
}
}
}
return new AbstractMap.SimpleEntry<>(maxField, maxValue);
}
、、解读
首先,代码初始化了一个maxField和maxValue变量,用于记录最大值对应的键和最大值本身。
然后,代码对List中的每个Map进行迭代,然后再对每个Map中的每个键值对进行迭代。如果值的类型是BigDecimal,那么就进行比较,找出最大值,并更新maxValue和maxField。
最后,方法返回一个新建的Map.Entry对象,其中包含最大值对应的键和最大值本身。