创建一个数组列表数组


175

我想要创建一个arraylist数组,如下所示:

ArrayList<Individual>[] group = new ArrayList<Individual>()[4]

但是它没有编译。我怎样才能做到这一点?


8
不要混合使用数组和集合。实际上,除非您要处理原始数据(或者您知道自己在做什么),否则不要使用数组。数组是可用性的噩梦,它们使您的代码无法维护。
肖恩·帕特里克·弗洛伊德

13
@SeanPatrickFloyd您能解释为什么数组是可用性的噩梦吗?
用户

3
@crucifiedsoul当然。数组不能成长,你不能塞入任何东西到一个数组,数组不会覆盖标准方法,如平等的哈希码或等的toString
肖恩·帕特里克·弗洛伊德

9
@SeanPatrickFloyd好的-好吧,我需要四个数组列表-我计划按索引访问每个数组列表-我不需要外部数组来增长或缩小-我不需要任何toString或哈希码,等等- -对我来说,数组是这里的明显选择-在这种情况下,您会推荐什么呢?
BrainSlugs83 2015年

4
好的,这是一个古老的问题,但是我还是要问一下,看看是否有人回答。我看到每个人都在谈论为什么列表列表是一个糟糕的主意,不良的编码实践等。我进行了查找是因为我正在学习做哈希链,而哈希链的定义就是列表的数组!那么中央编程数据结构到底如何成为糟糕的编码实践呢?还是只属于@Sean提到的IYKWYD类别?
jimboweb '16

Answers:


142

根据Oracle文档

“您不能创建参数化类型的数组”

相反,您可以执行以下操作:

ArrayList<ArrayList<Individual>> group = new ArrayList<ArrayList<Individual>>(4);

正如Tom Hawting的建议-定位线一样,最好这样做:

List<List<Individual>> group = new ArrayList<List<Individual>>(4);

20
List<List<Individual>> group = new ArrayList<List<Individual>>();可能会更好。
Tom Hawtin-大头钉

4
“无法创建泛型类型的数组”是什么意思?这对我来说真的没有意义,因为如果您提供其应有的条件,那么它不是通用的,对吧?
安迪

5
我对它的投票感到惊讶,因为它没有回答问题(即我想这样做,我该怎么做)。除了第一句。
Florian F

15
为什么列表引用比ArrayList更好?
shifu 2015年

3
@shifu List引用比ArrayList更通用;声明为List会抽象出ArrayList的API,该API扩展到List API之外。这很好,因为它简化了对List的引用,该列表的API可能无论如何都具有List所需的全部内容,而又不会使ArrayList拥有的引用API混乱。仅当需要其API中的特定内容才能通过引用使用时,才应声明为ArrayList。
cellepo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.