ArrayList über verschiedene Klassen verwenden

Josie

Mitglied
Hallo

Mein Programm ist ein bisschen verschachtelt und ich habe nun Mühe mit einer ArrayListe.

Und zwar Folgendes:
Ich habe eine Main-Klasse, in der die Klasse Generator aufgerufen wird. Im Konstruktor der Klasse Generator instanziiere ich eine ArrayListe<Bruecke>, welche aus Objekten der Klasse Bruecke besteht.
Die ArrayListe<Bruecke> verwende ich aber in der Klasse Insel.

Ich weiss aber nicht, wie ich das richtig implementieren soll.

Die Klasse Generator:
Java:
public ArrayList<Bruecke> listBruecken;

    public Generator(String strBreite, String strHoehe, String strcountAnzInsel) {

        hoehe = Integer.parseInt(strHoehe);
        breite = Integer.parseInt(strBreite);
        maximum = Integer.parseInt(strcountAnzInsel);
        this.listInseln = new ArrayList<Insel>();
        this.listBruecken = new ArrayList<Bruecke>();

Die Klasse Bruecke:
Java:
private ArrayList<Bruecke> listeBruecken;

    public Bruecke(int startInselID, int endInselID, ArrayList<Bruecke> listeBruecken) {
        this.startInselID = startInselID;
        this.endInselID = endInselID;
        this.listeBruecken = listeBruecken;
    }

Die Klasse Insel. Hier wird die Liste gefüllt:
Code:
public Insel(int neuX, int neuY, ArrayList<Insel> bestInselListe, int id,
            int anzBruecken) {
...
}

brueckeListe.add(neueBruecke);
 
Ehrlich gesagt blicke ich da vor lauter Brücken und Listen nicht durch. Aber das was oben steht passt irgendwie nicht. Was ist denn brueckeListe z.B. ? Es gibt listeBruecke ? Meintest du die ? Und was willst du eigentlich machen bzw. was geht nicht ? Hast du schon mal über getter und setter für deine diversen Listen nachgedacht ?
 
Eben, es ist ein bisschen kompliziert...
In der Klasse Bruecke habe ich schon getter/setter.
Das Ziel ist einfach eine Liste mit Bruecken (welche in der Klasse Generator instanziiert wurde) in der Klasse Insel zu füllen.
Ich weiss einfach nicht, wie ich die instanziierte Liste aus der Klasse Generator in der Klasse Insel verwenden kann. Ich möchte ja nicht in der Klasse Insel Generator instanziieren (also nicht new Generator()).
Kommt man da nun besser draus?
 
Es gibt ein einziges Generator-Objekt, dieses erzeugt die Bruecken und Inseln ? Warum ist die Bruecken-Liste in Generator wenn sie doch in Insel gebraucht wird ? Haben die Bruecken- und Insel-Objeke eine Referenz auf Generator ?
 
Die Bruecken-Liste ist im Generator, weil nur eine Liste gebraucht wird. Sie wird dann erzeugt, wenn der Konstruktor des Generators aufgerufen wird.
Nein, die Bruecken- und Insel-Objekte haben keine Referenz auf Generator. Der Generator ruft eine Methode auf, die mehrmals verschieden Inseln und Bruecken erzeugt (und prüft) und in Listen schreibt. Diese weiteren Methoden sind in der Klasse Insel.
 
Du könntest diese Liste im Generator private static machen. Und eine public static add-Methode (oder auch andere wenn du brauchst). Etwa so , hier nur mit String-Liste:

Code:
    private static List<String> myList = null;

    public static void addList(String aString) {
        myList.add(aString);
    }

    public void Generator() {
        myList = new ArrayList<String>();
    }

Und in deiner Insel rufst du dann "Generator.addList(....) auf

Edit: setzt halt voraus dass deine Liste wirklich nur ein einziges Mal existieren soll !
 
Ja, okay. Und aufpassen, wenn du mehr als ein Generator-Objekt erzeugst wird im Konstruktur jedesmal eine neue Liste angelegt. Wahrscheinlich gehört das oben in die Initialisierung (statt null);
 

Neue Themen


Zurück
Oben