因为项目中需要获取到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时的错误和正确操作相关推荐

  1. java grabcut_求教,在用OpenCV java接口调用GrabCut图像分割函数时出现错误

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求教,在用OpenCV java接口调用GrabCut图像分割函数时出现错误 代码为: import org.opencv.core.*; import ...

  2. 怎么找不到JAVA9_在Java 9上运行应用程序时获取错误“找不到模块”:log4j.core

    [INFO] ---------------------------------------------- --------------- [ERROR] /C:/Users/sumit.garg/w ...

  3. java call.invoke,关于_call.invoke 时出现错误,呼唤专家

    当前位置:我的异常网» J2EE » 关于_call.invoke 时出现错误,呼唤专家 关于_call.invoke 时出现错误,呼唤专家 www.myexceptions.net  网友分享于:2 ...

  4. gradle 编译java配置文件_java – 如何在编译时使gradle使用正确的JDK?

    这比Gradle或Java问题更像是一个过程问题.最终,你必须强迫每个人指定他们的各种JAVA_HOME而不会繁重.你有几个选择: >命令行:./ gradlew -Dorg.gradle.ja ...

  5. 在用 Eclipse 搭建 SAP Commerce Cloud 调试环境时,错误和正确的 buildfile

    错误的 buildfile:我的用户目录下: 为什么是这个目录? where ant 的输出结果: 我在 Eclipse 里用 自带的 build,使用的 build.xml 似乎不对. 上图才是正确 ...

  6. Java的知识点6—— 强制类型转换、基本类型转化时常见错误和问题、 简单的键盘输入和输出

     强制类型转换 强制类型转换,又被称为造型,用于显式的转换一个数值的类型.在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出. public class Test2 {pu ...

  7. ntbackup 创建卷影复制:ffffffff 时出现错误

    今天备份时提示这个错误 备份状态 操作: 备份 活动备份目标: 文件 媒体名: "webBackup.bkf 创建于 2008-12-3,9:51" 卷影复制操作: 试图 1. 功 ...

  8. java hashmap value_Java HashMap values() 方法

    values() 方法返回映射中所有 value 组成的 Set 视图. 语法 values() 方法的语法为: hashmap.values() 注:hashmap 是 HashMap 类的一个对象 ...

  9. java hashmap 无序,【Java】HashMap自定义排序

    HashMap中的对象根据成员进行自定义排序 Map是Java中最常用的存储对象的集合类之一,存储在HashMap中的对象在取出时是无序的,下文以示例介绍了如果对HashMap中存储的对象根据成员进行 ...

最新文章

  1. python怎么读文件内容-Python读取文件内容为字符串的方法(多种方法详解)
  2. 前端开发VScode常用插件
  3. Struts2.3.4.1 + Spring3.1.2 + Hibernate4.1.6整合
  4. vs2017项目配置
  5. 都说「跳一跳」是微信抄袭了育碧,万万没想到,他们在一起了!
  6. 计算机生成兵力方法,计算机生成兵力平台体系结构技术研究
  7. 一看就会 PicGo+gitee+Tyora个人图库搭建
  8. 位置度标注方法图解_追踪主力-散户操盘实战图解:案例实操
  9. 山东大学——国际结算方式
  10. 电商api接口:淘宝以图搜图
  11. 13商软 团队博客 列表
  12. 罗裳轻解,看C++怎样拥java入怀……
  13. 《Facebook启示录》的启示
  14. 择校秘籍|北邮计算机 和 北航计算机 应该怎么选?
  15. linux如何进去recovery模式,Android------recovery 模式启动进入流程
  16. 【附源码】计算机毕业设计JAVA罪犯信息管理系统
  17. 小清新毕业论文答辩PPT (2)PPT-朴尔PPT
  18. hdu 3509 Buge's Fibonacci Number Problem
  19. 华三讲堂:Overlay网络与物理网络的关系
  20. android 调用图片裁剪功能,Android图片裁剪,合成(调用系统裁剪功能)

热门文章

  1. html网页设计大赛_HTML5网页设计大赛 || 决赛名单公布
  2. onnx 测试_用于ONNX的TensorRT后端
  3. Ruby中带有示例的Hash.key?(value)方法
  4. spring aop 必须的包 及里面用到的东西_Spring 原理初探——IoC、AOP
  5. java向数组中增加新元素_用Java中的新元素替换List的给定索引处的元素
  6. electron 菜单栏_如何在Electron JS中添加任务栏图标菜单?
  7. vector cbegin_vector :: cbegin()函数以及C ++ STL中的示例
  8. 单位矩阵属性(I ^ k = I)| 使用Python的线性代数
  9. Auto activation triggers for Java(代码提示)功能扩展
  10. 手把手带你玩转Tensorflow 物体检测 API (4)—— 模型验证