创建ArrayList 元素的数组

我想创建一个包含ArrayList 元素的数组。

我试过了

ArrayList name[] = new ArrayList()[]; 

但这似乎不起作用。

您无法创建generics类型的数组。

相反,您可以创建一个ArrayList>

正确的方法是:

 ArrayList name[] = new ArrayList[9]; 

但是,这也不起作用,因为你不能用generics类型创建一个数组,你要做的是一个矩阵,这应该这样做:

 String name[][]; 

我知道这有点老了,但无论如何我都会回应这个未来的观点。

如果你真的想要一个ArrayList[]结构,你可以简单地创建一个扩展ArrayList并创建该类数组的类:

 public class StringArrayList extends ArrayList{} 

在您的实施中:

 ArrayList name[] = new StringArrayList[9]; 

这是一个示例:

 package testspace.arrays; import java.util.List; public class TestStringArray { public static void main(String[] args) { List[] arr = new StringArrayList[10]; for(int i = 0; i < arr.length; i++){ // CANNOT use generic 'new ArrayList()' arr[i] = new StringArrayList(); for(int j = 0; j < arr.length; j++){ arr[i].add("list item #(" + j + "|" + i + ")"); } } StringBuilder sb = new StringBuilder(); for(final List list : arr){ for(final String str : list){ sb.append(str + " "); } sb.append("\n"); } System.out.println(sb.toString()); } } 

注意如果使用它,将会出现运行时错误: arr[i] = new ArrayList()

这不是合适的OO,这种代码是非常实现耦合的。 如果你需要做这样的事情,可能你做错了什么。 如果代码不是你的,那么制作它的人可能做错了。

如果您知道有多少元素(或者即使您没有),为什么不使用Map>

 ArrayList> name= new ArrayList>(/*capacity*/); 

如果你想要一个ArrayList ,你必须单独初始化数组的每个位置:

 int size = 9; // 9 is just an example // you can remove the annotation, but you'll be warned: // Type safety: The expression of type ArrayList[] needs unchecked conversion // to conform to ArrayList[] @SuppressWarnings("unchecked") ArrayList name[] = new ArrayList[ size]; for( int i = 0; i < size; i++) { name[ i] = new ArrayList(); } 

我已经尝试了这个没有错误,即使我已经在arrays中设置了一个小于添加项目数量的限制:

 package Testes.src; import java.util.ArrayList; import java.util.List; public class Testes { private List name=new ArrayList(1); public Testes(){ for (int i = 1; i <= 100; i++) { name.add("Teste"+Integer.toString(i)); } for (int i = 0; i < name.size(); i++) { System.out.println(name.get(i)); } } public static void main(String [] args) { Testes t1=new Testes(); } } 

我知道这是一个老post,但是有人刚问了同样的问题,因为没有人提到过以下解决方案,这里就是。

解决它的一种方法可能是像对象的2d数组(最近的问题是关于2d数组或ArrayLists),然后你应该能够将ArrayList引用放在数组中。 我还没有测试过,但这样的事情应该可行。

 Object [][] data = new Object[5][5]; data[0][0] = new ArrayList(); // etc . . . 

你可以试试这个:

 ArrayList[] arr=new ArrayList[5]; for(int i=0;i<5;i++) arr[i]=new ArrayList(); arr[1].add("35"); arr[1].add("ME"); arr[1].add("HELLO"); System.out.println(arr[1]); 

输出:

 [35, ME, HELLO] 
 // This is the not correct way ArrayList name[] = new ArrayList()[]; // This is the correct way ArrayList list[] = new ArrayList[2]; list[0] = new ArrayList(); list[1] = new ArrayList(); list[0].add("Some String 11"); list[0].add("Some String 22"); list[1].add("Some String 1111"); list[1].add("Some String 2222"); 

ArrayLists数组,例如循环

 //Declare Object[] arrayLists = new Object[size]; //Fill for (int j=0; j < size; j++) { arrayLists[k]= generateAnArrayList(j); //or whatnot } //Usage for (int j=0; j < size; j++) { ArrayList al = (ArrayList) arrayLists[j]; //do something here } 

只需对代码进行少量修改即可实现此目的。

 ArrayList[] name = new ArrayList[10]; 

这将为您提供一个ArrayList数组。