# Liste von Liste



## guguli (10. Aug 2016)

Hallo zusammen,
ich habe folgendes Problem:
ich möchte über ein array iterieren und jedes Element dieses Arrays als eine liste in einer Liste schreiben.
Bsp:
array = [a,s,d,f]
nun möchte ich eine liste von Listen die so aus sieht:
newArray =[[a],,[d],[f]]
Kann mir bitte einen Tipp geben?
Dnake


----------



## Xyz1 (10. Aug 2016)

```
List<List<Object>> listList = ..;
```


```
List<List<String>> listListString = ..;
```


----------



## guguli (10. Aug 2016)

DerWissende hat gesagt.:


> ```
> List<List<Object>> listList = ..;
> ```
> 
> ...




und wie kann ich da was da hinzufürgen.

Ich schreib in groovy und mache wie folgt:

```
def test = [[]]
alltickets.each{ticket ->
test.add(ticket.name)
}
```

da funktioniert aber so nicht.
das ergebnis ist [[],name], es muss aber das sein: [[name]]


----------



## Xyz1 (10. Aug 2016)

Hier steht ne ganze menge:
http://stackoverflow.com/documentation/java/90/collections#t=201608101357571219585
Liste von Liste fehlt allerdings^
(Schlechter Stil, aber nur nebenbei bemerkt)


----------



## Jardcore (10. Aug 2016)

hört sich nach einer einfachen zwei dimensionalen Liste an.

```
String[][] test = new String[10][10];
String[0] = new String[10];
String[0][1] = "a";
// usw.
```
Wenn du nicht die dynamische Möglichkeit von DerWissende benutzen willst. (welche ich aber empfehlen würde)


----------



## guguli (10. Aug 2016)

Der link ist leider keine Hilfe


----------



## guguli (10. Aug 2016)

Jardcore hat gesagt.:


> hört sich nach einer einfachen zwei dimensionalen Liste an.
> 
> ```
> String[][] test = new String[10][10];
> ...


nein, zwei dimensionale Liste ist es auch nicht, sonden eine liste, die aus mehreren Listen besteht.


----------



## Jardcore (10. Aug 2016)

guguli hat gesagt.:


> Der link ist leider keine Hilfe


Das stimmt 



guguli hat gesagt.:


> nein, zwei dimensionale Liste ist es auch nicht, sonden eine liste, die aus mehreren Listen besteht.


Ja, aber das besteht mein Beispiel auch.


----------



## guguli (10. Aug 2016)

Jardcore hat gesagt.:


> Das stimmt
> 
> 
> Ja, aber das besteht mein Beispiel auch.


Kann dein Beispiel sowas generieren?
[ [1] , [e] , [3] ]


----------



## Xyz1 (10. Aug 2016)

Also bester Stil ist es jetzt nicht, aber es erfüllt deine Forderungen:

```
Random r = new Random();
        List<List<Object>> llo = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            if (r.nextDouble() < 0.5) {
                llo.add(new ArrayList<>(Arrays.asList(r.nextInt(5))));
            } else {
                llo.add(new ArrayList<>(Arrays.asList((char) ('A' + r.nextInt('Z' - 'A' + 1)))));
            }
        }

        for (List<Object> list : llo) {
            Object o = list.get(0);
            if (o instanceof Integer) {
                Integer i = (Integer) o;
                System.out.println("i = " + i);
            }
            if (o instanceof Character) {
                Character c = (Character) o;
                System.out.println("c = " + c);
            }
        }
```

Wobei dann für kleinbuchstaben:

```
(char) ('a' + r.nextInt('z' - 'a' + 1))
```

`List<List<Object>>` garantiert dir nicht, dass
1. "sublist" immer genau 1 lang ist,
2. nicht etwas anderes außer Integer und Character in "sublist" gelegt wird.


----------



## tommysenf (10. Aug 2016)

Probiers mal so:

def test = [[]]
alltickets.each{ticket ->
test[0].add(ticket.name)
}

In deinem Code fügst du der Liste Test, welche bisher nur eine leere Liste als 1. Element beinhaltet ein neues Element Name hinzu. Was du aber anscheinend
möchtest ist dem 1. Element der Liste Test ein neues Element hinzufügen.

P.S.: Es gibt hier einen Bereich Scriptsprachen, in den deine  Groovy Frage besser reinpasst, dann bekommst du auch nicht so viele Antworten die an der Frage vorbeigehen …


----------



## Xyz1 (10. Aug 2016)

Ich ging von Java aus - mea culpa.


----------



## guguli (11. Aug 2016)

tommysenf hat gesagt.:


> Probiers mal so:
> 
> def test = [[]]
> alltickets.each{ticket ->
> ...


Hallo, 
Die Idee mit test[0] ist schon ma gut. aber was denn wenn ich mehrere Elemente in dem alltickets habe.
ich hab versucht so zu machen:

```
def i = 0
def test = [[]]
alltickets.each{ticket ->
test[i].add(ticket.name)
i = i+1
}
```

da gibt mir aber ein error (nulpointer) zurück:
Cannot invoke method add() on null object.

ich will sowas dann haben :
[[name1] , [name2] , ... ]


----------



## guguli (11. Aug 2016)

ich hab das wie folgt gemahct:

```
liste=[]
alltickets.each{ticket ->
templist=[]
templist.add(ticket.name)
liste.add(templist)
}
```


----------

