sig*_*hol 30 java arrays arraylist
我想创建一个包含ArrayList <String>元素的数组.
我试过了
ArrayList<String> name[] = new ArrayList<String>()[];
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用.
Car*_*ela 11
正确的方法是:
ArrayList<String> name[] = new ArrayList[9];
Run Code Online (Sandbox Code Playgroud)
但是,这也不会起作用,因为你不能创建一个泛型类型的数组,你要做的是一个矩阵,这应该这样做:
String name[][];
Run Code Online (Sandbox Code Playgroud)
小智 10
我知道这有点旧,但无论如何我将对此作出回应以供将来查看.
如果你真的想要一个ArrayList<String>[]结构,你可以简单地创建一个扩展ArrayList的类并创建该类的数组:
public class StringArrayList extends ArrayList<String>{}
Run Code Online (Sandbox Code Playgroud)
在您的实施中:
ArrayList<String> name[] = new StringArrayList[9];
Run Code Online (Sandbox Code Playgroud)
这是一个示例:
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());
}
}
Run Code Online (Sandbox Code Playgroud)
注意如果使用此选项,则会出现运行时错误:arr[i] = new ArrayList<String>()
这不是正确的OO,这种代码是非常实现耦合的.如果你需要做这样的事情,可能你做错了什么.如果代码不是你的,那么制作它的人可能做错了.
如果您知道有多少元素(或者即使您没有),为什么不使用Map<Integer,List<String>>?