Java 创建ArrayList的数组<;字符串>;元素

Java 创建ArrayList的数组<;字符串>;元素,java,arrays,arraylist,Java,Arrays,Arraylist,我想创建一个包含ArrayList元素的数组 我试过了 ArrayList<String> name[] = new ArrayList<String>()[]; ArrayList name[]=新的ArrayList()[]; 但这似乎不起作用。您无法创建泛型类型的数组 相反,您可以创建阵列列表,正确的方法是: ArrayList<String> name[] = new ArrayList[9]; ArrayList name=新的ArrayLis

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

我试过了

ArrayList<String> name[] = new ArrayList<String>()[];
ArrayList name[]=新的ArrayList()[];

但这似乎不起作用。

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

相反,您可以创建
阵列列表

,正确的方法是:

ArrayList<String> name[] = new ArrayList[9];
ArrayList name=新的ArrayList(/*capacity*/);

如果您确实想要一个数组
数组列表
,则必须分别初始化数组的每个位置:

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>();
}
int size=9;//9只是一个例子
//您可以删除注释,但会收到警告:
//类型安全性:ArrayList[]类型的表达式需要未经检查的转换
//要符合ArrayList[]
@抑制警告(“未选中”)
ArrayList name[]=新的ArrayList[size];
对于(int i=0;i
这不是合适的OO,这种代码与实现非常耦合。 如果你需要做这样的事情,很可能你做错了什么。 如果代码不是你的,那么编写代码的人可能做错了什么


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

我知道这有点旧,但我还是要对此做出回应,以备将来查看

如果您确实需要
ArrayList[]
结构,只需创建一个扩展ArrayList的类并创建该类的数组:

public class StringArrayList extends ArrayList<String>{}
公共类StringArrayList扩展了ArrayList{}
在实施过程中:

ArrayList<String> name[] = new StringArrayList[9];
ArrayList name[]=新的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());
    }

}
package testspace.array;
导入java.util.List;
公共类TestStringArray{
公共静态void main(字符串[]args){
列表[]arr=新的StringArrayList[10];
对于(int i=0;i

注意如果改用此选项,则会出现运行时错误:
arr[i]=new ArrayList()

我尝试了此选项,但没有出现错误,即使我在数组中设置的限制小于添加的项目数量:

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();
    }
}
package Testes.src;
导入java.util.ArrayList;
导入java.util.List;
公共类测试{
私有列表名称=新的ArrayList(1);
公共测试(){

对于(inti=1;i我知道这是一篇老文章,但是有人问了同样的问题,因为没有人提到下面的解决方案,这里就是了

有一种方法可以绕过它,比如对象的2d数组(最近的问题是关于2d数组或ArrayList),然后您应该能够在数组中放置ArrayList引用。我没有测试过它,但类似的方法应该可以工作

Object [][] data = new Object[5][5];
data[0][0] = new ArrayList<String>(); // etc . . .
Object[][]数据=新对象[5][5];
数据[0][0]=新的ArrayList();//等。
您可以尝试以下方法:

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]);
//这不是正确的方法
ArrayList名称[]=新ArrayList()[];
//这是正确的方法
ArrayList[]=新的ArrayList[2];
列表[0]=新的ArrayList();
列表[1]=新的ArrayList();
列表[0]。添加(“某些字符串11”);
列表[0]。添加(“某些字符串22”);
列表[1]。添加(“某些字符串1111”);
列表[1]。添加(“某些字符串2222”);

数组列表,例如循环

//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
}
//声明
Object[]ArrayList=新对象[大小];
//填满
对于(int j=0;j
有一种方法可以做到这一点,只需对代码进行少量修改

ArrayList<String>[] name = new ArrayList[10]; 
ArrayList[]name=新的ArrayList[10];

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

您想要一个ArrayList数组。为什么在某种意义上使用数组而在其他意义上使用ArrayList?我知道将有多少个元素。使用ArrayList数组还是更好吗?这是的副本:但第一个可以工作,但它显示了类型安全警告。您好,在这种情况下,这里怎么可能?这是7年前的答案。你的答案带来了什么新的价值?
[35, ME, HELLO]
// 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");
//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
}
ArrayList<String>[] name = new ArrayList[10];