创建一个ArrayList <string>元素数组</string>

时间:2010-12-28 20:18:27

标签: java arrays arraylist

我想创建一个包含ArrayList&lt; String&gt;的数组元件。

我试过

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

但这似乎不起作用。

12 个答案:

答案 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数组。