Создайте массив элементов ArrayList <String>

Я хочу создать массив, содержащий элементы ArrayList <String> .

Я пробовал

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

но это не работает.

Ответ 1

Вы не можете создать массив общего типа.

Вместо этого вы можете создать ArrayList<ArrayList<String>>.

Ответ 2

Правильный способ:

ArrayList<String> name[] = new ArrayList[9];

Однако это тоже не сработает, так как вы не можете создать массив с общим типом, то, что вы пытаетесь сделать, это матрица, и это должно быть выполнено следующим образом:

String name[][];

Ответ 3

Я знаю, что это немного устарело, но я буду отвечать на это в любом случае для будущих просмотров.

Если вам действительно нужна структура 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>()

Ответ 4

Это не правильно OO, и этот код очень связан с реализацией. Если вам нужно это сделать, возможно, вы сделали что-то не так. Если код не принадлежит вам, человек, который его сделал, вероятно, сделал что-то неправильно.

Если вы знаете, сколько элементов есть (или даже если вы этого не сделали), почему бы не использовать Map<Integer,List<String>>?

Ответ 5

ArrayList<ArrayList<String>> name= new ArrayList<ArrayList<String>>(/*capacity*/);

Ответ 6

Если вам нужен массив 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>();
}

Ответ 7

Я пробовал это без ошибки, хотя я поместил ограничение в массив меньше количества добавленных элементов:

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();
    }
}

Ответ 8

Я знаю, что это старый пост, но кто-то просто задал тот же вопрос, и поскольку никто не упомянул о следующем решении, вот оно.

Один из способов обойти это может быть чем-то вроде массива 2d (недавний вопрос был о 2d массиве или ArrayLists) объектов, а затем вы должны были бы поместить ссылки ArrayList в массив. Я не тестировал его, но что-то вроде этого должно работать.

Object [][] data = new Object[5][5];
data[0][0] = new ArrayList<String>(); // etc . . .

Ответ 9

Вы можете попробовать следующее:

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]

Ответ 10

// 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");