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

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

被折叠的 条评论
为什么被折叠?



