解决java.util.HashMap$Values cannot be cast to java.ut的问题
java.util.HashMap$Values cannot be cast to java.util.List
想获取map的值集合,将之转换为List
1.HashMap<String, Map> map1 = new HashMap<>();
获取值集合:map1.values()
默认返回值是 Collection
想把它转换为List,直接用了强转 List values = (List) map1.values();
然后幸运的就报错了。尴尬。
2.Collection转list两种方法
- ArrayList的构造器:
ArrayList<Map> results = new ArrayList<>(map1.values());
- 先转数组在转List
List<T> list=(List<T>) Arrays.asList(map1.values().toArray());
java.util.LinkedHashMap cannot be cast to java.lang.String
日常我们在使用redisTemplate对象操作redis数据的可能会出现java.util.LinkedHashMap cannot be cast to java.lang.String的异常,说的是无法将java.util.LinkedHashMap强制转换为java.lang.String
问题
在获取到redis中数据的时候不要强制转换为某一个java对象,例如下面我获取数据的时候强制转换为了String类型,这种操作当然会报错。
就好比把一个不确定的类型强制转换为String他坑定报错。

正确的解决方案
1.获取redis中的数据就使用Objec类型接收数据
2.在使用阿里巴巴fastjson将获取到的Object类型对象转换为json格式字符串,方法:JSON.toJSONString(对象)
3.在将json格式对象转换为你需要的java对象,问题即可迎刃而解。方法:JSON.parseObject(json,要转换的类的字节码)

如上为解决从redis中获取数据出现类型转换异常的解决方案,原理没有深入研究。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Java多线程读写锁ReentrantReadWriteLock类详解
本文详细讲解了Java多线程读写锁ReentrantReadWriteLock类,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-12-12
SpringBoot集成Redisson实现分布式锁的方法示例
这篇文章主要介绍了SpringBoot集成Redisson实现分布式锁的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-10-10
解决Springboot项目bootstrap.yml不生效问题
Spring Boot 2.4版本开始,配置文件加载方式进行了重构,只会识别application.* 配置文件,并不会自动识别bootstrap.yml,所以本文给大家介绍Springboot项目bootstrap.yml不生效问题的解决方案,需要的朋友可以参考下2023-09-09
解决SpringBoot整合MybatisPlus分模块管理遇到的bug
这篇文章主要介绍了解决SpringBoot整合MybatisPlus分模块管理遇到的bug,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-07-07
SpringBoot整合Keycloak实现单点登录的示例代码
本文主要介绍了SpringBoot整合Keycloak实现单点登录的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2022-03-03
SpringBoot如何读取配置文件中的数据到map和list
这篇文章主要介绍了SpringBoot如何读取配置文件中的数据到map和list,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-02-02


最新评论