Java中对于List<Map>对象中的相关操作(排序、最大值、最小值、和、平均数)

这篇具有很好参考价值的文章主要介绍了Java中对于List<Map>对象中的相关操作(排序、最大值、最小值、和、平均数)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、对List< Map >中指定键对应的值进行排序
		// 创建List对象
        List<Map<String,Object>> list = new ArrayList<>();
        Random random = new Random();
        // 循环添加数据
        for (int i = 0; i < 10; i++) {
            Map<String,Object> map = new HashMap<>();
            map.put("id",1);
            map.put("name","test"+i);
            map.put("age",random.nextInt(100));
            list.add(map);
        }
        System.out.println("排序前:---");
        list.forEach(System.out::println);
        // 排序的主要逻辑
        list.sort((o1,o2) -> {
            Integer age = Integer.valueOf(o1.getOrDefault("age",Integer.MIN_VALUE).toString());
            Integer age1 = Integer.valueOf(o2.getOrDefault("age",Integer.MIN_VALUE).toString());
//            return age.compareTo(age1); // 升序
            return age1.compareTo(age); // 降序
        });
        System.out.println("排序后:---");
        list.forEach(System.out::println);

注意:
(1)、升序和降序的主要区别就是方法中调用compareTo方法的对象不同,其余没有变化
(2)、Map集合的getOrDefault方法是为了防止出现空指针异常(如果你的数据都不为空则可以直接用get方法进行取值)

二、获取List< Map >中的指定键对应的最大值
(1)、可以按上述方法进行降序排序后获取第一个值
(2)、继上面的数据,使用jdk1.8的stream流进行获取最大值
// 若数据中不存在null值
int age = list.stream().mapToInt(m -> (Integer) m.get("age")).max().getAsInt();
// 若数据中可能存在null值
int maxAge = list.stream().mapToInt(m -> (Integer) m.getOrDefault("age",Integer.MIN_VALUE)).max().getAsInt();
三、获取List< Map >中的指定键对应的最小值
(1)、按照第一种排序方法进行升序排序后获取第一个值
(2)、继上面的数据,使用jdk1.8的stream流进行获取最小值
// 若数据中不存在null值
int age = list.stream().mapToInt(m -> (Integer) m.get("age")).min().getAsInt();
// 若数据中可能存在null值
int age = list.stream().mapToInt(m -> (Integer) m.getOrDefault("age",Integer.MAX_VALUE)).min().getAsInt();

最大最小值获取注意事项:
(1)、获取最大最小值主要就是更换了其方法 max()和min()
(2)、获取最大最小值时Map对象的getOrDefault方法中的默认值记得更换,获取最大值时:Integer.MIN_VALUE,获取最小值时:Integer.MAX_VALUE,若数据中该字段(键)没有空值则直接使用get方法即可
文章来源地址https://www.toymoban.com/news/detail-598038.html

四、获取List< Map >中的指定键对应的和以及平均数
// 获取和
// 数据中可能存在null值
int age = list.stream().mapToInt(m -> (Integer) m.getOrDefault("age",0)).sum();
// 数据中不会出现null值
int age = list.stream().mapToInt(m -> (Integer) m.get("age")).sum();
// 获取平均值
Double avgAge = list.stream().mapToInt(m -> (Integer) m.getOrDefault("age",0)).average().getAsDouble();
// 数据中不会出现null值
Double age = list.stream().mapToInt(m -> (Integer) m.get("age")).average().getAsDouble();

到了这里,关于Java中对于List<Map>对象中的相关操作(排序、最大值、最小值、和、平均数)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包