Java arraylist of arraylist-créer une arraylist multidimensionnelle avec un objet de classe


Je cherche à créer une arraylist de 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);

}

C'est mon code ci-dessus, Mais je n'ai pas pu ajouter une arraylist interne aux tableaux externes. Je ne suis pas sûr que ce que je fais soit juste. Ou s'il existe une autre méthode pour le faire correctement, veuillez aider.

Tout d'abord, j'essaie de créer une arraylist en tant qu'objets sous une classe et je veux utiliser cette arraylist interne dans outerarraylist. fondamentalement, j'ai besoin d'une arraylist 2d avec l'aide de la classe. Veuillez me conseiller ou m'aider avec un échantillon code où je peux utiliser arraylist dans arraylist, y ajouter des éléments et le moyen d'y accéder.

Author: zack, 2016-11-24

1 answers

Au Lieu de:

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

Voulez-vous utiliser ce qui suit à la place?

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

EDIT: pour imprimer outer, essayez ceci.

Tout d'abord, ajoutez une méthode toString() à la classe Neighbors:

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

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

Ensuite, vous pouvez simplement imprimer outer utilisation:

System.out.println(outer);

Sinon, si vous ne voulez pas utiliser une classe, vous pouvez simplement utiliser une ArrayList d'une liste de tableaux:

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

Cela imprime [[0, 1, 2], [3, 4]].

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