java strings Erstellen Sie ein Array von ArrayList<String>-Elementen



java multidimensional arraylist (10)

Wenn Sie ein Array von ArrayList möchten, müssen Sie jede Position des Arrays einzeln initialisieren:

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

Ich möchte ein Array erstellen, das ArrayList <String> -Elemente enthält.

ich habe es versucht

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

aber das scheint nicht zu funktionieren.


Ich weiß, dass das ein bisschen alt ist, aber ich werde darauf für zukünftige Ansichten trotzdem antworten.

Wenn Sie wirklich eine ArrayList<String>[] -Struktur möchten, können Sie einfach eine Klasse erstellen, die ArrayList erweitert und ein Array dieser Klasse erstellt:

public class StringArrayList extends ArrayList<String>{}

Und in Ihrer Implementierung:

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

Hier ist ein Beispiel:

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

}

HINWEIS Sie erhalten einen Laufzeitfehler, wenn Sie stattdessen arr[i] = new ArrayList<String>() verwenden: arr[i] = new ArrayList<String>()


Dies ist kein richtiges OO und diese Art von Code ist sehr implementiert. Wenn Sie so etwas tun müssen, haben Sie wahrscheinlich etwas falsch gemacht. Wenn der Code nicht dir gehört, hat die Person, die sie gemacht hat, wahrscheinlich etwas falsch gemacht.

Wenn Sie wissen, wie viele Elemente vorhanden sind (oder auch nicht), warum verwenden Sie nicht Map<Integer,List<String>> ?


Array of ArrayLists, Beispiel mit Loops

//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
}

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

Es gibt eine Möglichkeit, dies mit nur geringer Änderung Ihres Codes zu tun.

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

Dadurch erhalten Sie ein Array ArrayList.


Sie können kein Array eines generischen Typs erstellen.

Stattdessen können Sie eine ArrayList<ArrayList<String>> erstellen.


Ich weiß, das ist ein alter Post, aber jemand hat nur die gleiche Frage gestellt und da niemand die folgende Lösung erwähnt hat, ist es hier.

Ein Weg, um es zu umgehen könnte etwas wie ein 2D-Array (die letzte Frage war über ein 2D-Array oder ArrayLists) von Objekten und dann Sie in der Lage, ArrayList Referenzen in das Array setzen. Ich habe es nicht getestet, aber so etwas sollte funktionieren.

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

Der richtige Weg ist:

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

Dies wird jedoch auch nicht funktionieren, da Sie kein Array mit einem generischen Typ erstellen können, was Sie versuchen, ist eine Matrix, und das sollte so gemacht werden:

String name[][];

Ich habe dies ohne einen Fehler versucht, obwohl ich ein Limit in das Array weniger als die Menge der Elemente hinzugefügt habe:

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




arraylist