Java之HashMap.values()转List时的错误和正确操作
因为项目中需要获取到Map的值的集合,所以调用了HashMap.values()方法转成List,当时是使用了以下代码。(逻辑上这样想应该没问题,但生活总是会是不是给你一点小“”惊喜“”)
List<AreaItemOpt> areaItemOpts = (List<AreaItemOpt>) areaItemOptMap.values();
return areaItemOpts;
怀着喜悦的心情在测试环境中运行之后,它报错了!报错如下:
java.lang.ClassCastException: java.util.HashMap$Values cannot be cast to java.util.List
错误原因:
于是翻了一下values()方法的源码
public Collection<V> values() {Collection<V> vs = values;return (vs != null ? vs : (values = new Values()));}
原来values()方法只是返回了一个Collection集合,可是如程序中的用法所示,在向下转型的时候出现了类型转换错误。
解决方法:
在ArrayList中,有一个构造函数
public ArrayList(Collection<? extends E> c) {elementData = c.toArray();if ((size = elementData.length) != 0) {// c.toArray might (incorrectly) not return Object[] (see 6260652)if (elementData.getClass() != Object[].class)elementData = Arrays.copyOf(elementData, size, Object[].class);} else {// replace with empty array.this.elementData = EMPTY_ELEMENTDATA;}}
可以接受一个集合类型的参数,然后返回一个list;这样就达到了预期目的。代码如下:
List<AreaItemOpt> areaItemOpts = new ArrayList<>(areaItemOptMap.values());
return areaItemOpts;
测试通过~
发现还有一种方法也可以解决这个问题:
List<T> list=(List<T>) Arrays.asList(map.values().toArray());//先转数组再转list
Java之HashMap.values()转List时的错误和正确操作相关推荐
- java grabcut_求教,在用OpenCV java接口调用GrabCut图像分割函数时出现错误
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求教,在用OpenCV java接口调用GrabCut图像分割函数时出现错误 代码为: import org.opencv.core.*; import ...
- 怎么找不到JAVA9_在Java 9上运行应用程序时获取错误“找不到模块”:log4j.core
[INFO] ---------------------------------------------- --------------- [ERROR] /C:/Users/sumit.garg/w ...
- java call.invoke,关于_call.invoke 时出现错误,呼唤专家
当前位置:我的异常网» J2EE » 关于_call.invoke 时出现错误,呼唤专家 关于_call.invoke 时出现错误,呼唤专家 www.myexceptions.net 网友分享于:2 ...
- gradle 编译java配置文件_java – 如何在编译时使gradle使用正确的JDK?
这比Gradle或Java问题更像是一个过程问题.最终,你必须强迫每个人指定他们的各种JAVA_HOME而不会繁重.你有几个选择: >命令行:./ gradlew -Dorg.gradle.ja ...
- 在用 Eclipse 搭建 SAP Commerce Cloud 调试环境时,错误和正确的 buildfile
错误的 buildfile:我的用户目录下: 为什么是这个目录? where ant 的输出结果: 我在 Eclipse 里用 自带的 build,使用的 build.xml 似乎不对. 上图才是正确 ...
- Java的知识点6—— 强制类型转换、基本类型转化时常见错误和问题、 简单的键盘输入和输出
强制类型转换 强制类型转换,又被称为造型,用于显式的转换一个数值的类型.在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出. public class Test2 {pu ...
- ntbackup 创建卷影复制:ffffffff 时出现错误
今天备份时提示这个错误 备份状态 操作: 备份 活动备份目标: 文件 媒体名: "webBackup.bkf 创建于 2008-12-3,9:51" 卷影复制操作: 试图 1. 功 ...
- java hashmap value_Java HashMap values() 方法
values() 方法返回映射中所有 value 组成的 Set 视图. 语法 values() 方法的语法为: hashmap.values() 注:hashmap 是 HashMap 类的一个对象 ...
- java hashmap 无序,【Java】HashMap自定义排序
HashMap中的对象根据成员进行自定义排序 Map是Java中最常用的存储对象的集合类之一,存储在HashMap中的对象在取出时是无序的,下文以示例介绍了如果对HashMap中存储的对象根据成员进行 ...
最新文章
- python怎么读文件内容-Python读取文件内容为字符串的方法(多种方法详解)
- 前端开发VScode常用插件
- Struts2.3.4.1 + Spring3.1.2 + Hibernate4.1.6整合
- vs2017项目配置
- 都说「跳一跳」是微信抄袭了育碧,万万没想到,他们在一起了!
- 计算机生成兵力方法,计算机生成兵力平台体系结构技术研究
- 一看就会 PicGo+gitee+Tyora个人图库搭建
- 位置度标注方法图解_追踪主力-散户操盘实战图解:案例实操
- 山东大学——国际结算方式
- 电商api接口:淘宝以图搜图
- 13商软 团队博客 列表
- 罗裳轻解,看C++怎样拥java入怀……
- 《Facebook启示录》的启示
- 择校秘籍|北邮计算机 和 北航计算机 应该怎么选?
- linux如何进去recovery模式,Android------recovery 模式启动进入流程
- 【附源码】计算机毕业设计JAVA罪犯信息管理系统
- 小清新毕业论文答辩PPT (2)PPT-朴尔PPT
- hdu 3509 Buge's Fibonacci Number Problem
- 华三讲堂:Overlay网络与物理网络的关系
- android 调用图片裁剪功能,Android图片裁剪,合成(调用系统裁剪功能)
热门文章
- html网页设计大赛_HTML5网页设计大赛 || 决赛名单公布
- onnx 测试_用于ONNX的TensorRT后端
- Ruby中带有示例的Hash.key?(value)方法
- spring aop 必须的包 及里面用到的东西_Spring 原理初探——IoC、AOP
- java向数组中增加新元素_用Java中的新元素替换List的给定索引处的元素
- electron 菜单栏_如何在Electron JS中添加任务栏图标菜单?
- vector cbegin_vector :: cbegin()函数以及C ++ STL中的示例
- 单位矩阵属性(I ^ k = I)| 使用Python的线性代数
- Auto activation triggers for Java(代码提示)功能扩展
- 手把手带你玩转Tensorflow 物体检测 API (4)—— 模型验证