这个问题已经在这里有了答案:

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

Entry<K,V>[] table

Entry内部的键和值的类型和值分别为K和V。

但..

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

Object[] elementData

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

===============>>#1 票数:4 已采纳

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

  ask by rai.skumar translate from so

未解决问题?本站智能推荐:

2回复

在ArrayList上指定类型参数的位置[重复]

这个问题已经在这里有了答案 : 什么是原始类型,为什么我们不应该使用它呢? (15个答案) 2年前关闭。 两侧铸造之间有什么区
3回复

具有原始类型但没有类型参数的ArrayList()中的get()方法行为

我正在研究Java集合。 我发现了一些奇怪的事情,却不明白为什么会这样。 所以这是场景。 现在,最后一行按原样打印“ Hello World”。 但是由于我没有使用任何类型参数,因此应该给一个对象类型作为回报。因此它应该调用对象的toString()而不是String的toStri
2回复

为什么我不能将通用类型参数添加到ArrayList中?

下面第一行注释中的代码显示“城市无法转换为T”。 因此,在下一行中,我将其强制转换为T。在主程序中编译方法“ testing”后,它将引发以下异常:“线程“ main”中的异常java.lang.ClassCastException:[Ljava.lang.Object;不能是强制转换为[La
1回复

为什么类型L即使扩展了ArrayList也没有任何类型参数? [重复]

这个问题已经在这里有了答案: Java泛型类型擦除:何时以及何时发生? 7个答案 List <Dog>是List <Animal>的子类吗? 为什么Java泛型不是隐式多态的? 16个答案 这是我的代码: 我正在使用I
1回复

如何处理重复类型参数?

我上课看起来像这样。 // just followed the T, U, V... public class Some<T...., U....> { } 而且我需要添加一个如下所示的实例方法。 // not a static method // just
1回复

强制类型参数在java泛型中实现特定方法

有没有办法在java泛型中强制类型参数来实现equals方法? 例如,我写了这个类: public class Bag<Item> implements Iterable<Item> ,它contains使用Item.equals方法的方法。 所以我想确保泛型中传递的
1回复

如何实现类型参数是参数化类型的约束

我想制作一个程序,它从FileDialog获取一个.class (或一个.java文件)文件,条件是该类是通用类型,例如LinkedList<T> , ArrayList<T>或其他用户选择的数据结构。 如果类不是泛型类型,我想抛出一个异常。 为了进一步说明,我想测试
3回复

为什么泛型类型参数说“扩展”可比较而不是“实现”? [重复]

这个问题在这里已有答案: Java泛型 - 为什么允许“扩展T”而不是“实现T”? 7个答案 我试着编写从数组中删除重复元素的泛型函数。 正如您所看到的,您无法传递像int []数组这样的原始类型,因为我通过在Comparable接口中定义的compare
1回复

Java中的变量类型参数?

我正在考虑将此C#库移植到Java和Android https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/tree/master/SignalR.EventAggregatorProxy.Client.DotNet
2回复

有没有一种方法可以检查通用参数(HashMap >)是certian类型的?

我有一个函数,该函数使用HashMap<Integer, ArrayList<CustomObject1>> map作为参数。 但是,现在功能已经扩展,我需要使用另一个包含ArrayList<CustomObject2>> HashMap调用此函数。