Java arraylist di arraylist-creare un arraylist multi dimensionale con un oggetto di classe


Sto cercando di creare un arraylist di arraylist.

import java.util.ArrayList;
import java.util.List;

class Neighbors{
ArrayList<Integer> inner = new ArrayList();
Neighbors(){}
}

ArrayList<Neighbors> outer = new ArrayList<Neighbors>();

void setup() {
size(1280, 700, JAVA2D);
background(0);

Neighbors test1 = new Neighbors();
Neighbors test2 = new Neighbors();

test1.inner.add(0);
test1.inner.add(1);
test1.inner.add(2);

test2.inner.add(5);
test2.inner.add(6);
test2.inner.add(7);

println(test1.inner);
println(test2.inner);
//  outer.add((ArrayList)test.inner);
outer.add(test1.inner);
outer.add(test2.inner);
println(outer);

}

Questo è il mio codice sopra, ma non ho potuto aggiungere arraylist interno agli array esterni. Non sono sicuro che quello che sto facendo sia giusto. O se c'è qualche altro metodo per farlo in un modo giusto per favore aiuto.

In primo luogo, sto cercando di creare un arraylist come oggetti in una classe e voglio usare questi arraylist interni in outerarraylist. fondamentalmente ho bisogno di un arraylist 2d con l'aiuto della classe. Per favore consigli o aiutami con un campione codice in cui posso usare arraylist all'interno di arraylist, aggiungere elementi ad esso e il modo per accedervi.

Author: zack, 2016-11-24

1 answers

Invece di:

outer.add(test1.inner);
outer.add(test2.inner);

Si desidera utilizzare invece quanto segue?

outer.add(test1);
outer.add(test2);

EDIT: Per stampare outer, prova questo.

Innanzitutto, aggiungere un metodo toString() alla classe Neighbors:

class Neighbors {
    ArrayList<Integer> inner = new ArrayList();

    @Override
    public String toString() {
        return inner.toString();
    }
}

Quindi, puoi semplicemente stampare outer usando:

System.out.println(outer);

In alternativa, se non si desidera utilizzare una classe, è sufficiente utilizzare un ArrayList di un ArrayList:

ArrayList<ArrayList<Integer>> outer = new ArrayList<>();
outer.add(new ArrayList<>());
outer.get(0).add(0);
outer.get(0).add(1);
outer.get(0).add(2);

ArrayList<Integer> inner = new ArrayList<>();
inner.add(3);
inner.add(4);
outer.add(inner);

System.out.println(outer);

Questo stampa [[0, 1, 2], [3, 4]].

 2
Author: Dan Zheng, 2016-11-24 03:57:25