【问题标题】:Implementation of type parameter in HashMap vs ArrayList [duplicate]HashMap vs ArrayList中类型参数的实现[重复]
【发布时间】:2014-04-20 16:07:17
【问题描述】:

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

Entry<K,V>[] table

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

但是..

ArrayList&lt;E&gt; 将数据存储为对象数组。即

Object[] elementData

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

【问题讨论】:

  • E[]Entry&lt;E&gt;[] 不是一回事。
  • HashMap 做一件事,ArrayList 做一件事
  • 不同意这是重复的;它被标记为重复的问题不包括任何关于 HashMap 为何不同的内容。

标签: java generics


【解决方案1】:

简短回答:尝试自己实现它,看看会发生什么。长答案:因为 Java 使用类型擦除,并且您需要在运行时知道类型才能创建新数组,new E[size] 不会编译,所以如果没有某种 hack,它就无法做到这一点。但是,您无需知道泛型参数即可创建新数组,因为它们已被删除,因此您不必在运行时知道它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 2021-04-17
    • 2020-08-21
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多