创建ArrayList <String>元素的数组

sig*_*hol 30 java arrays arraylist

我想创建一个包含ArrayList <String>元素的数组.

我试过了

ArrayList<String> name[] = new ArrayList<String>()[];
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.

SLa*_*aks 37

您无法创建泛型类型的数组.

相反,你可以创建一个ArrayList<ArrayList<String>>.


Car*_*ela 11

正确的方法是:

ArrayList<String> name[] = new ArrayList[9];
Run Code Online (Sandbox Code Playgroud)

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

String name[][];
Run Code Online (Sandbox Code Playgroud)

  • 但第一个DOES工作,但它显示类型安全警告. (4认同)

小智 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>()


Vic*_*usa 5

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

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