从永远到永远-Map传值的坑map.values()

博客讲述了在Java中从Map获取values并转换为List时遇到的ClassCastException错误,以及如何通过转换为Collection再构造List来解决这个问题。强调了避免使用Map作为参数传递,因其不利于维护且易引发类型转换问题。

Map传值的坑map.values

1.需求

将某接口中返回的数组,根据某字段进行排序取前三条。为不与原处理逻辑耦合(不想看祖传代码,更不想在祖传代码中留下操作痕迹),直接在返回数据前,将数组取出排序,重新设置进去。
结果,正因为没有仔细看代码并且对这个世界怀揣美好的幻想,程序华丽丽地报错了。

2.错误

java.lang.ClassCastException: java.util.HashMap$Values cannot be cast to java.util.List

浅显易懂,hashMap的values不能转成List。忍着恶心,我看了看代码。说真的,我还是低估一个同事的想象力。map封装反参,就算了。这个数组,不是List不是数组。而是先将n个map封装到一个map中,之后将map.values()封装到了返回数组中。如图,示例代码:
在这里插入图片描述

3.解决

看下源码,map.values返回的是Collection。
在这里插入图片描述
那就先转成Collection。处理如下
在这里插入图片描述
完整实例代码

Map<String, Object> returnMap = new HashMap<>();
        Map<String, Map
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值