LinkedList的Java数组

LinkedList的Java数组,java,generics,Java,Generics,为什么 LinkedList[]列表=新建LinkedList[32]; StaticError:分配中的错误类型:从原始LinkedList[]到LinkedList[] 及 LinkedList[]列表=(LinkedList[])新建LinkedList[32]; StaticError:强制转换中的错误类型:从原始LinkedList[]到LinkedList[] 都是编译,但给我关于原始类型的运行时错误 我需要创建一个LinkedList数组(基本上是一个哈希表…这是我的家庭作业,

为什么

LinkedList[]列表=新建LinkedList[32];
StaticError:分配中的错误类型:从原始LinkedList[]到LinkedList[]

LinkedList[]列表=(LinkedList[])新建LinkedList[32];
StaticError:强制转换中的错误类型:从原始LinkedList[]到LinkedList[]

都是编译,但给我关于原始类型的运行时错误


我需要创建一个LinkedList数组(基本上是一个哈希表…这是我的家庭作业,所以我不能偏离它太多)。我计划使用单独的链接来处理冲突,也就是用LinkedList中的连续元素填充数组中的重复条目。如有任何想法,将不胜感激

在Java中,数组和泛型不能很好地发挥作用

我知道你说你不能偏离这个设计太多。使用
ArrayList
而不是数组会使您的生活更加轻松:

LinkedList<String>[] list= (LinkedList<String>[]) new LinkedList[32];
StaticError: Bad types in cast: from raw LinkedList[] to LinkedList<String>[]
List bucket=new ArrayList();
对于(int i=0;i
在Java中,数组和泛型不能很好地发挥作用

我知道你说你不能偏离这个设计太多。使用
ArrayList
而不是数组会使您的生活更加轻松:

LinkedList<String>[] list= (LinkedList<String>[]) new LinkedList[32];
StaticError: Bad types in cast: from raw LinkedList[] to LinkedList<String>[]
List bucket=new ArrayList();
对于(int i=0;i
此代码:

    List<LinkedList<String>> buckets = new ArrayList<LinkedList<String>>();
    for (int i = 0; i < num_buckets; ++i) {
        buckets.add(new LinkedList<String>());
    }
您的代码有效。

此代码:

    List<LinkedList<String>> buckets = new ArrayList<LinkedList<String>>();
    for (int i = 0; i < num_buckets; ++i) {
        buckets.add(new LinkedList<String>());
    }

您的代码可以正常工作。

这是由于“擦除”问题(正如您所说,这是“家庭作业”,我强烈建议您仔细阅读这个主题:您将学到有趣的东西!)并且本质上与这样一个事实有关:当他们引入泛型时,他们必须在运行时保持与现有非泛型代码的兼容性

因此,这两个答案(在我键入这一个时出现)可以解决您的问题(特别是,在构造函数调用中添加符号),但不能真正解决基本问题(数组和泛型彼此并不喜欢)


使用
ArrayList
更可取。

这是由于“擦除”问题(正如你所说的“家庭作业”,我强烈建议你仔细阅读这个主题:你会学到有趣的东西!),本质上与他们引入泛型时,他们必须在运行时保持与现有非泛型代码的兼容性

因此,这两个答案(在我键入这一个时出现)可以解决您的问题(特别是,在构造函数调用中添加符号),但不能真正解决基本问题(数组和泛型彼此并不喜欢)


最好使用
ArrayList

我甚至不知道如何实例化它,你能给我举个例子吗?ArrayList list=new ArrayList()??@Connor:看到更新的答案了。啊,就是这样,我想我可以做到,我刚从一些以前的帖子中跳出来,谈到了LinkedList的数组,但我想我现在就忘了它们。我甚至不知道如何实例化它,你能给我举个例子吗?ArrayList list=new ArrayList()??@Connor:看更新后的答案。啊,就是这样,我想我可以做到,我刚从一些以前的帖子中跳出来,讨论了LinkedList的数组,但我想我会忘记它们,因为现在每天都有同样的问题。。你们有并没有试着阅读《收藏指南》或者浏览这里的泛型标签?你们并没有注意到我的代码和你们刚才引用的线程中的代码完全相同吗?是的,我尽了最大的努力去阅读这个主题,但这似乎是一个相对较小的错误,事实上,NPE做得很好,至少为我指明了正确的方向。好吧,我现在明白了,这个主题的公认答案也有同样的东西,但我略过了它,因为它在将数组强制转换到LinkedList的问题上获得了一半的投票,我想这是我的错,当事情开始失败时,要判断并不总是容易的,“但是给我关于原始类型的运行时错误”没有“关于原始类型的运行时错误”。运行时一切都是原始的。嗯,我不知道你称之为“交互”窗格是什么,我只是想说,我在运行它们时遇到了错误,那么坏类型?每天都有相同的问题。。你们有并没有试着阅读《收藏指南》或者浏览这里的泛型标签?你们并没有注意到我的代码和你们刚才引用的线程中的代码完全相同吗?是的,我尽了最大的努力去阅读这个主题,但这似乎是一个相对较小的错误,事实上,NPE做得很好,至少为我指明了正确的方向。好吧,我现在明白了,这个主题的公认答案也有同样的东西,但我略过了它,因为它在将数组强制转换到LinkedList的问题上获得了一半的投票,我想这是我的错,当事情开始失败时,要判断并不总是容易的,“但是给我关于原始类型的运行时错误”没有“关于原始类型的运行时错误”。运行时一切都是原始的。我不知道你称之为“交互”窗格是什么,我只是想说当我运行它们时,会出现错误,那么坏类型呢?
Hello
, 
World!