我想创建一个包含ArrayList< String>的数组元件。
我试过
ArrayList<String> name[] = new ArrayList<String>()[];
但这似乎不起作用。
答案 0 :(得分:36)
您无法创建泛型类型的数组。
相反,您可以创建ArrayList<ArrayList<String>>
。
答案 1 :(得分:11)
正确的方法是:
ArrayList<String> name[] = new ArrayList[9];
但是,这也不会起作用,因为你不能创建一个泛型类型的数组,你要做的是一个矩阵,这应该这样做:
String name[][];
答案 2 :(得分:10)
我知道这有点旧,但无论如何我都会对此作出回应。
如果你真的想要一个ArrayList<String>[]
结构,你可以简单地创建一个扩展ArrayList并创建该类数组的类:
public class StringArrayList extends ArrayList<String>{}
在您的实施中:
ArrayList<String> name[] = new StringArrayList[9];
以下是一个示例:
package testspace.arrays;
import java.util.List;
public class TestStringArray {
public static void main(String[] args) {
List<String>[] arr = new StringArrayList[10];
for(int i = 0; i < arr.length; i++){
// CANNOT use generic 'new ArrayList<String>()'
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<String> list : arr){
for(final String str : list){
sb.append(str + " ");
}
sb.append("\n");
}
System.out.println(sb.toString());
}
}
注意如果您使用此选项,则会收到运行时错误:arr[i] = new ArrayList<String>()
答案 3 :(得分:5)
这不是合适的OO,这种代码是非常实现耦合的。 如果你需要做这样的事情,可能你做错了什么。 如果代码不是你的,那么制作代码的人可能做错了。
如果您知道有多少元素(或者即使您没有),为什么不使用Map<Integer,List<String>>
?
答案 4 :(得分:2)
ArrayList<ArrayList<String>> name= new ArrayList<ArrayList<String>>(/*capacity*/);
答案 5 :(得分:2)
如果你想要一个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<String>[]
@SuppressWarnings("unchecked")
ArrayList<String> name[] = new ArrayList[ size];
for( int i = 0; i < size; i++) {
name[ i] = new ArrayList<String>();
}
答案 6 :(得分:0)
我已经尝试了这个没有错误,即使我在数组中限制了一个小于添加项目数量的限制:
package Testes.src;
import java.util.ArrayList;
import java.util.List;
public class Testes {
private List<String> name=new ArrayList<String>(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();
}
}
答案 7 :(得分:0)
我知道这是一篇很老的帖子,但是有人刚问了同样的问题,因为没有人提到过以下的解决方案,这里就是。
解决它的一种方法可能是像对象的2d数组(最近的问题是关于2d数组或ArrayLists),然后你应该能够将ArrayList引用放在数组中。我还没有测试过,但这样的事情应该可行。
Object [][] data = new Object[5][5];
data[0][0] = new ArrayList<String>(); // etc . . .
答案 8 :(得分:0)
你可以试试这个:
ArrayList[] arr=new ArrayList[5];
for(int i=0;i<5;i++)
arr[i]=new ArrayList<String>();
arr[1].add("35");
arr[1].add("ME");
arr[1].add("HELLO");
System.out.println(arr[1]);
输出:
[35, ME, HELLO]
答案 9 :(得分:0)
// This is the not correct way
ArrayList<String> name[] = new ArrayList<String>()[];
// This is the correct way
ArrayList<String> 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");
答案 10 :(得分:0)
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<Long> al = (ArrayList<Long>) arrayLists[j];
//do something here
}
答案 11 :(得分:0)
只需对代码进行少量修改即可实现此目的。
ArrayList<String>[] name = new ArrayList[10];
这将为您提供一个ArrayList数组。