java - HashMap 与 ArrayList 中类型参数的实现

标签 java generics

HashMap<K,V>将数据存储为条目数组。即

Entry<K,V>[] table

Entry内的key和value的类型分别是K和V。

但是..

ArrayList<E>将数据存储为对象数组。即

Object[] elementData

所以想知道为什么 ArrayList 不使用 E 类型的数组??

最佳答案

简短回答:尝试自己实现,看看会发生什么。长答案:因为Java使用类型删除,并且您需要在运行时知道类型才能创建新数组,所以 new E[size] 不会编译,所以它不能这无需某种黑客手段。但是,您不需要知道通用参数来创建新数组,因为它们会被删除,因此您不必在运行时知道它们。

关于java - HashMap 与 ArrayList 中类型参数的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23184599/

相关文章:

c# - 什么时候不使用通用集合?

java - 现实生活中的通用类示例

jsf - 为什么 JSF 将 String 值放入 M​​ap<..., Integer> 中?以及如何解决这个问题?

ios - 如何在具有泛型类型的类中的 Realm 对象上使用自定义初始化程序?

java - 将带有 JSON 数据的授权 curl -u post 请求转换为等效的 RestTemplate

java - 在 Java Servlet 中按下按钮后看不到表格

java - 在没有 Spring 的情况下解决 JAX RS 中的数组序列化

java - JList 不显示为列表,只是一个点...也许是一个图形点?

java - 从字符串中检索整数

java - 具有相同 PrimaryKey 和foreignKey 的 OneToOne