• Wir präsentieren Dir heute ein Stellenangebot für einen Frontend-Entwickler Angular / Java in Braunschweig. Hier geht es zur Jobanzeige

Objekte in LinkedList löschen und editieren

U

user1687

Mitglied
Liebe Java-Community,

ich möchte als Java-Anfänger ein Programm schreiben, um Objekte in einer Liste zu verwalten. Wie ich gesehen habe wurden hierzu schon mehrfach ähnliche Threads erstellt. Leider konnten mir die anderen Threads nicht weiterhelfen.

Ich möchte aus einer LinkedList ein zuvor erstelltes Objekt der Klasse Freund anhand des Attributs "name" löschen.
Ich habe zum Testen exemplarisch in der Main 3 Objekte erstellt.

Die unten aufgeführte Methode löscht nach Ausführung in der Main aber immer den ersten Eintrag der Liste, egal welchen name ich eingebe. Wo liegt mein Denkfehler??
Methodenaufruf in der Main:
freund.deleteObj("Bauer");
Methode zum Löschen:
public boolean deleteObj(String name){
        
        Iterator<Freund> it = list.iterator();     
        while (it.hasNext()) {                           
            Freund value = it.next();
            if(value.equals(name));
                it.remove();                           
                return true;
        }
        return false;
}


Weiterhin möchte ich gerne einzelne Attribute der Objekte in der Liste nachträglich ändern. Bpsw. hat ein Freund eine Adresse. Ich konnte leider noch keinen Hinweis finden wie sich einzelne Attribute in einer Liste nachträglich möglichst "galant" ändern lassen?

Zu guter Letzt gibt es noch den Fall, dass ein Freund auch zwei Adressen haben kann. Muss sich also um eine 1:n-Beziehung handeln. Ich habe hier im Forum gelesen, dass man dies durch eine Collection lösen kann. Leider fehlt mir auch hier der erste Ansatz zur Implementierung?


Ich wäre sehr dankbar über jeden Hinweis zu den genannten Problemen und bedanke mich im Voraus!

Viele Grüße
 
Beste Antwort
kneitzel
Da es mehrere Adressen geben kann, ist generell ein List<Adresse> vorhanden.
Java:
public class Freund {
    // Attribute
    private String name;
    private String vorname;
    private String geburtsdatum; //tt.mm.jjjj
    private int id;

    private List<Adresse> adressen;
 
 
    // Konstruktor
    public Freund(int plz, String ort, String strasse, String name, String vorname,
            String geburtsdatum, int id) {
        adressen = new ArrayList<>();
        adressen.add(new Adresse(plz, ort, strasse));
        this.name = name;
        this.vorname = vorname;
        this.geburtsdatum = geburtsdatum;
        this.id = id;
    }

Und dann kannst Du natürlich noch eine Methode add(Adresse adresse) oder so...
kneitzel

kneitzel

Top Contributor
In java ist die Einrückung nur Schönheit - nicht wie in anderen Sprachen eine Bündelung ...

Java:
if(value.equals(name));
                it.remove();                           
                return true;

Du hast hinter dem if einen leeren Befehl (durch das ";"). Daher werden die nächsten zwei Befehle immer durchgeführt.

Java:
if(value.equals(name)){
                it.remove();                           
                return true;
}
wird wohl das sein, was Du machen möchtest....
 
U

user1687

Mitglied
Oh, vielen Dank, das hatte ich total übersehen. Durch Austausch des Codes wird jetzt gar nichts mehr gelöscht.

Ich dachte ein guter Ansatz wäre über die genannte Methode über die Liste zu iterieren und dann sobald der name durch die while-Schleife gefunden wird den passenden Eintrag zu löschen. Aber will irgendwie nicht. :(
 
kneitzel

kneitzel

Top Contributor
Vermutlich liegt das daran, dass Du den ganzen Freund vergleichst und nicht den Namen des Freundes. Aber da wir die Klasse nicht kennen, ist das schwer zu sagen.

Aber Fakt ist: Du hast eine Instanz von Klasse Freund und vergleichst die mit einer Instanz von String. So Du da nicht in der equals Methode was gebastelt hast diesbezüglich, kann dies nicht funktionieren.
 
U

user1687

Mitglied
Ok, ich werde das nochmal überarbeiten. Bin noch etwas zaghaft den kompletten Code offen zu legen, da ich den ja zur Bewertung abgeben muss. Aber ja, für die Zusammenhänge würde das schon Sinn ergeben.
 
U

user1687

Mitglied
Hallo, hatte leider noch keinen Erfolg, daher hier die Klassen.

Was will ich überhaupt? Die Klasse Kartei soll quasi die Daten der Freunde verwalten und speichern. Freunde haben Eigenschaften (s. Klasse Freund), Freunde haben mindestens eine Adresse. Ein Freund hat eine Adresse.
Ich will eine Liste mit Freunden erstellen, die ich hinzüfgen, änderen(einzelner Werte), löschen, suchen, ausgeben etc. kann.

Ich habe in der Main mit der Kommentarfunktion beschreiben was passiert und was nicht. Danke für die Unterstützung!!!

Klasse Kartei:
public class Kartei {
    // Attribute
    private List<Freund> freundListe; // Liste für Objekte der Klasse Freund
    // Konstruktor
    public Kartei() {
        freundListe = new LinkedList<>(); // Erstellung einer LinkedList,
    }
    // Methoden
   
    //........Die für das Problem nicht relevanten Methoden habe ich rausgenommen......

    // Diese Methode entfernt Freunde aus der Liste
    public boolean removeFreund(Freund name) {

        Iterator<Freund> it = freundListe.iterator(); // Es wird über die Liste freundListe interriert );
        while (it.hasNext()) { // Solange Einträge vorhanden sind und der Wert dem eingegebenen Namen
                                // entspricht.
            Freund value = it.next();
            if (value.equals(name)) {
                it.remove(); // wird der Eintrag gelöscht
                return true;
            }
            // Wenn die Bedingung nicht erfüllt wird.
        }
        System.out.println("Der Name existiert nicht!");
        return false;
    }

}

Klasse Freund:
public class Freund {
    // Attribute
    private String name;
    private String vorname;
    private String geburtsdatum; //tt.mm.jjjj
    private int id;

    private Adresse adresse; // Ein Freund hat mindestens 1 Adresse. Freund hat Adresse (1:n-Beziehung)

    // Konstruktor
    public Freund(int plz, String ort, String strasse, String name, String vorname,
            String geburtsdatum, int id) {
        adresse = new Adresse(plz, ort, strasse);
        this.name = name;
        this.vorname = vorname;
        this.geburtsdatum = geburtsdatum;
        this.id = id;
    }

    // Methoden
        // "Getter und Setter" für Zugriff auf die Klassenattribute
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getVorname() {
        return vorname;
    }
    public void setVorname(String vorname) {
        this.vorname = vorname;
    }

    public String getGeburtsdatum() {
        return geburtsdatum;
    }

    public void setGeburtsdatum(String geburtsdatum) {
        this.geburtsdatum = geburtsdatum;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public Adresse getAdresse() {
        return adresse;
    }

    public void setAdresse(Adresse adresse) {
        this.adresse = adresse;
    }

    public String toString() {
        return "ID: " + this.id + " " + "Name: " + this.name + ", Vorname: " + this.vorname + ", *" + this.geburtsdatum
                + ", wohnt in: " + adresse;
    }

    // Diese Klassenmethode erstellt ein neues Objekt Freund inkl. Adresse
    public static Freund erstelleFreund(int plz, String ort, String strasse, String name, String vorname,
            String geburtsdatum, int id) {
        return new Freund(plz, ort, strasse, name, vorname, geburtsdatum, id);
       
    }

Klasse Adresse:
ublic class Adresse{

    // Attribute
    private int plz;
    private String ort;
    private String strasse;

    // Konstruktor
    public Adresse(int plz, String ort, String strasse) {
        this.plz = plz;
        this.ort = ort;
        this.strasse = strasse;
    }

    // Methoden
    public int getPlz() {
        return plz;
    }

    public void setPlz(int plz) {
        this.plz = plz;
    }

    public String getOrt() {
        return ort;
    }

    public void setOrt(String ort) {
        this.ort = ort;
    }

    public String getStrasse() {
        return strasse;
    }

    public void setStrasse(String strasse) {
        this.strasse = strasse;
    }

    public String toString() {
        return  + this.plz + " " + this.ort + ", " + this.strasse;
    }

Main:
public class Mainprogramm {

    public static void main(String[] args) {

        Kartei freund = new Kartei(); // Neues Objekt der Klasse Kartei

        // Hier werden Methoden über Kartei genutzt
        freund.addFreund(Freund.erstelleFreund(99999, "Ort1", "Straße 1", "Müller", "Peter", "01.01.1991", 1)); // Klassenmethode
                                                                                                                // von
                                                                                                                // Freund.
                                                                                                                // aufrufen
        freund.addFreund(Freund.erstelleFreund(88888, "Ort2", "Straße 2", "Maurer", "Achim", "02.02.1992", 2));
        freund.addFreund(Freund.erstelleFreund(77777, "Ort3", "Straße 3", "Metzger", "Rudolf", "03.03.1993", 3));

        freund.ausgabe();

        freund.anzahl();

        System.out.println("");

        freund.findFreund("Metzger");

        System.out.println("");   // Bis hierher funktioniert alles.

        freund.removeFreund("Metzger");      // Hier zeigt er mit an: Exception in thread "main" java.lang.Error: Unresolved compilation problem:
                                            // The method removeFreund(Freund) in the type Kartei is not applicable for the arguments (String)

                                            // at Karteisystem.Mainprogramm.main(Mainprogramm.java:28)


        freund.ausgabe();    // Hier zeigt er mir immernoch die gleiche Liste an

        freund.anzahl();  // Die Anzahl bleibt bei 3 unverändert.

    }

}
 
Zuletzt bearbeitet:
U

user1687

Mitglied
Guten Morgen liebe Community,

auch wenn ich Gefahr laufe mich nach meinem dritten Eintrag in Folge alleine zu unterhalten (i know it's sunday) ;). Wollte ich mitteilen, dass ich für die Funktion "Freund löschen" auf eine Lösung gekommen bin:

Listeneintrag löschen:
public boolean removeFreund(String name) {
        
        Iterator<Freund> it = freundListe.iterator();

        while (it.hasNext()) {
            Freund alterFreund = it.next();
            if (name.equals(alterFreund.getName())) {
                it.remove();
                return true;
            }
        }
        return false;
    }

Die obige Methode löscht mir den Listeneintrag wenn ich in der Main mit
Java:
freund.removeFreund("Name");
einen vorhandenen Namen eingebe und ist eben "false", wenn der Name nicht in der Liste vorhanden ist.
 
U

user1687

Mitglied
Hallo liebe Java-Community,

ich benötige immer noch Unterstützung bei einem Beziehungs-Problem.

Ich möchte erreichen, dass ein 'Freund' eine ODER mehrere 'Adressen' haben kann. Nach Recherche weiß ich, dass es sich hierbei um eine 1:N-Beziehung handelt. Also eine Assoziation, dass ein Freund mindestens eine Adresse hat aber auch mehrere haben kann (Ist ja auch realistisch). Man könnte dies vielleicht auch als schwache Aggregation beschreiben, da eine Adresse zwar zu einem Freund gehört, beide Obj aber auch getrennt "leben" können. Der Freund lebt dann halt unter einer Brücke. ;)

Bis jetzt habe ich das wie folgt versucht zu implementieren:

Die Klasse 'Freund' hat die Klasse 'Adresse' als Attribut bekommen. Damit wollte ich darstellen: "Ein Freund hat eine Adresse". (Oder habe ich damit nur dargestellt, dass Freund Adresse kennt und Adresse Freund nicht kennt?)
Implementieren wollte ich die Verbindung über eine LinkedList.
Beim Methodenaufruf erstelle ich Freunde inkl. Adresse (s. Mainprogramm oben).

Irgendwo habe ich doch einen Bruch enthalten?
Ist die LinkedList vielleicht in der falschen Klasse implementiert? Müsste die Liste in der Klasse 'Adresse' sein, da ja auch Mehrere Adressen zu einem Freund gehören können?

Oder habe ich das anderweitig falsch umgesetzt? Ich hatte überlegt, ob es Sinn macht zunächst Obj von Freund und Obj von Adresse zu generieren und diese dann zu verlinken. Aber wie will ich das mit einer Liste umsetzten?

Ich habe mir vorgestellt, dass in der Konsole bspw. ein Freund mit 2 Adressen erscheinen kann: "Hans", "Maurer", Adresse1: "xzy", Adresse2: "abc"

Ich würde mich wirklich freuen, wenn mir hier jemand zumindest ein paar Ansatzpunkte liefern, ob ich mit obigen Code komplett an der Lösung vorbei gehe oder ob ich da vielleicht nur eine Stelle überarbeiten sollte?

Ich danke vielmals.

Grüße
 
kneitzel

kneitzel

Top Contributor
Also als Attribut meinst Du Instanzvariablen. Und da ist dann so, dass Du ja mehrere Adressen speichern willst, daher ist das List<Adresse> der richtige Typ.
Das können dann zwar technisch auch 0 Adressen sein, aber das wäre diese Beziehung.

Bei einem Konstruktor würde ich nichts vermengen. Freund bekommt dann nicht die Elemente der Adresse übergeben sondern eine Instanz von Adresse. Aber das ist erst einmal von der Funktionalität unabhängig.

Wenn es mindestens eine Adresse geben soll, dann kann das ja bei Zugriffen geprüft werden. Die Adresse darf dann z,B. nicht null sein. Und beim Entfernen von Adressen darf die letzte Adresse nicht entfernt werden ...

Damit hast Du aber im Code nur die Verbindung vom Freund zur Adresse. Wenn Du von einer Adresse zu einer Person kommen willst, dann musst Du dies natürlich auch implementieren. So könntest Du in Adresse ein Feld Freund einbauen. Hier musst Du nur aufpassen, denn Du hast einen Ring. Beim erzeugen musst Du also aufpassen, dass du da keine Endlosschleife hast. Sonst passiert sowas wie:
- Freund will Adresse setzen.
- Dazu setzt er das Attribut Freund auch in Adresse.
- Nun will Adresse aber auch in Freund die Adresse setzen.
- Dann will der Freund aber natürlich auch wieder ......

Daher wäre die Frage, ob dies so benötigt wird. Dann wäre es aber auch ggf. eine n:M Beziehung, denn an einer Adresse können ja mehrere Freunde wohnen ... Wenn Du das nur als Wert bei enem Freund siehst, dann lässt man diesen Link zurück schlicht weg.

Das nur als kleiner Hinweis ... vielleicht hilft es ja
 
U

user1687

Mitglied
Hallo!

Vielen Dank für die Antwort ich freue mich sehr.
Also als Attribut meinst Du Instanzvariablen.
Stimmt. Ich bin noch nicht so Sattelfest was die Begrifflichkeiten angeht.

Das hört sich plausibel an, ich dachte auch zunächst dass die Liste über die Adresse laufen muss. Nur gibt es da Probleme mit meinen Methoden, nämlich sollen Freunde anhand der ID eindeutig identifiziert werden, dafür muss in der Liste<Freund> geprüft werden, ob die Id bereits vorhanden ist. Das habe ich mit einer Schleife u. "equals" soweit gelöst bekommen. Weiterhin will ich in der Liste nach "Freunden" anhand des Namens oder der ID suchen.

Wenn ich bei
Klasse Freund:
public class Freund {
    // Attribute
    private String name;
    private String vorname;
    private String geburtsdatum; //tt.mm.jjjj
    private int id;

    private Adresse adresse;
  
  
    // Konstruktor
    public Freund(int plz, String ort, String strasse, String name, String vorname,
            String geburtsdatum, int id) {
        adresse = new Adresse(plz, ort, strasse);
        this.name = name;
        this.vorname = vorname;
        this.geburtsdatum = geburtsdatum;
        this.id = id;
    }
die Instanzvariable Adresse rausnehme, dann kann ich zwar noch Obj Freund erstellen und auch Obj Adresse mit der Klasse Adresse, aber ich habe dann keine Referenz mehr. Wie weiße ich dann einem Obj Freund seine Adresse 1 und sogar Adresse 2 zu?

Ich poste mal meine Tests in der Main vielleicht hilft das mein Problem bzw. Unwissenheit nachzuvollziehen.
Main:
public class Mainprogramm {

    public static void main(String[] args) {

        Kartei freund = new Kartei(); // Neues Objekt der Klasse Kartei

//         Hier werden Methoden über Kartei genutzt. Ich nutze direkt die Klassenmethode
        freund.addFreund(Freund.erstelleFreund(99999, "Ort1", "Straße 1", "Müller", "Peter", "01.01.1991", 4));                                 
        freund.addFreund(Freund.erstelleFreund(88888, "Ort2", "Straße 2", "Maurer", "Achim", "02.02.1992", 2));
        freund.addFreund(Freund.erstelleFreund(77777, "Ort3", "Straße 3", "Metzger", "Rudolf", "03.03.1993", 1));
        freund.addFreund(Freund.erstelleFreund(66666, "Ort4", "Straße4", "Maurer", "Beate", "01.01.1966", 3));
      
        // Obj freund9 über Klasse Freund Erstellen
        Freund freund9 = new Freund(11111, "Unbekannt", "Irgendwo 99", "Nagel", "Paula", "01.01.1999", 6);
        freund.addFreund(freund9);
        freund.ausgabe();
  
        System.out.println("------------Löschen-------------");
      
        freund.removeFreund("Maurer", 3);
      
        freund.ausgabe();
        freund.anzahl();
        freund.ausgabe();
      
        freund.findNameFreund("Maurer");
        freund.findIdFreund(2);
      
        Adresse.erstelleAdresse(23455, "Ort A", "Straße A");
        Adresse adresse1 = new Adresse(13423, "sdf", "sdfsdf");
        System.out.println(adresse1);

        freund9.setVorname("Hans");
        freund.ausgabe();
      
}
}

Die Konsole liefert mir hierfür:
Freund wurde hinzugefügt!
Freund wurde hinzugefügt!
Freund wurde hinzugefügt!
Freund wurde hinzugefügt!
Freund wurde hinzugefügt!
ID [4] Müller, Peter *01.01.1991, wohnt in 99999 Ort1, Straße 1
ID [2] Maurer, Achim *02.02.1992, wohnt in 88888 Ort2, Straße 2
ID [1] Metzger, Rudolf *03.03.1993, wohnt in 77777 Ort3, Straße 3
ID [3] Maurer, Beate *01.01.1966, wohnt in 66666 Ort4, Straße4
ID [6] Nagel, Paula *01.01.1999, wohnt in 11111 Unbekannt, Irgendwo 99
------------Löschen-------------
Der Freund [Maurer, Beate] mit der ID [3] wurde gelöscht!
ID [4] Müller, Peter *01.01.1991, wohnt in 99999 Ort1, Straße 1
ID [2] Maurer, Achim *02.02.1992, wohnt in 88888 Ort2, Straße 2
ID [1] Metzger, Rudolf *03.03.1993, wohnt in 77777 Ort3, Straße 3
ID [6] Nagel, Paula *01.01.1999, wohnt in 11111 Unbekannt, Irgendwo 99

In deiner Liste befinden sich derzeit 4 Freunde!
ID [4] Müller, Peter *01.01.1991, wohnt in 99999 Ort1, Straße 1
ID [2] Maurer, Achim *02.02.1992, wohnt in 88888 Ort2, Straße 2
ID [1] Metzger, Rudolf *03.03.1993, wohnt in 77777 Ort3, Straße 3
ID [6] Nagel, Paula *01.01.1999, wohnt in 11111 Unbekannt, Irgendwo 99

Suche nach Name...
Freund wurde gefunden: ID: 2 Name: Maurer, Vorname: Achim
Suchdurchlauf beendet!

Suche nach ID...
Freund wurde gefunden: ID: 2 Name: Maurer, Vorname: Achim
Suchdurchlauf beendet!
13423 sdf, sdfsdf
ID [4] Müller, Peter *01.01.1991, wohnt in 99999 Ort1, Straße 1
ID [2] Maurer, Achim *02.02.1992, wohnt in 88888 Ort2, Straße 2
ID [1] Metzger, Rudolf *03.03.1993, wohnt in 77777 Ort3, Straße 3
ID [6] Nagel, Hans *01.01.1999, wohnt in 11111 Unbekannt, Irgendwo 99


Ich möchte jetzt quasi noch erreichen dass bspw. Nagel, Hans 2 Adressen zugewiesen bekommt und diese in der Konsole i.V.m. mit Name, etc. ausgegeben werden.
 
kneitzel

kneitzel

Top Contributor
Da es mehrere Adressen geben kann, ist generell ein List<Adresse> vorhanden.
Java:
public class Freund {
    // Attribute
    private String name;
    private String vorname;
    private String geburtsdatum; //tt.mm.jjjj
    private int id;

    private List<Adresse> adressen;
 
 
    // Konstruktor
    public Freund(int plz, String ort, String strasse, String name, String vorname,
            String geburtsdatum, int id) {
        adressen = new ArrayList<>();
        adressen.add(new Adresse(plz, ort, strasse));
        this.name = name;
        this.vorname = vorname;
        this.geburtsdatum = geburtsdatum;
        this.id = id;
    }

Und dann kannst Du natürlich noch eine Methode add(Adresse adresse) oder so hinzufügen, die dann einfach ein adressen.add(adresse) aufruft.
Und schon kannst Du einem Freund eine zweite Adresse hinzufügen.

Bei der Ausgabe musst Du dann halt in der Ausgabe nicht einfach adresse ausgeben, sondern du gehst das ganze Array durch und gibst alle Adressen aus.
 
Beste Antwort
U

user1687

Mitglied
Ich habe vorhin tatsächlich mit einer Liste in der Liste quasi rumexperimentiert. War mir aber zu abwegig und hatte keinen Erfolg. Aber danke für den Hinweis ich werde das morgen nochmal probieren. 👍👍👍
 
U

user1687

Mitglied
Poste sonst, was nicht ging und dann schauen wir auch einmal kurz drüber.
Schönen guten Morgen,

ich habe jetzt buchstäblich nochmal im Code rumgewurstelt. Ich bin durch Deinen Hinweis jetzt auf eine Lösung gekommen. Vielen Dank dafür! Bis jetzt scheint alles soweit zu funktionieren. Mein Gefühl sagt mir aber, dass das etwas umständlich von mir programmiert wurde. Ich denke bei weiteren Tests wird bestimmt wieder was aufpoppen.

Über weitere Optimierungsvorschläge wäre ich sehr dankbar.

Klasse Kartei:
import java.util.*;

public class Kartei {

    // Attribute
    private List<Freund> freundListe; // Liste für Objekte der Klasse Freund
    // Konstruktor
    public Kartei() {
        freundListe = new LinkedList<>();
    }
    // Methoden(Auszug)
    public void ausgabe() {
        for (Freund alterFreund : freundListe) {
            System.out.println(alterFreund);           
        }
    }
}
Klasse Freund:
import java.util.*;

public class Freund {
    // Attribute
    private String name;
    private String vorname;
    private String geburtsdatum; // tt.mm.jjjj
    private int id;
    private List<Adresse> adressListe = new ArrayList<>(); // Ein Freund hat mindestens 1...* Adressen
                                                            // daher instanziiere ich direkt eine neue ArrayList
    // Konstruktor, ohne Adresse...
    public Freund(String name, String vorname, String geburtsdatum, int id) {
        this.name = name;
        this.vorname = vorname;
        this.geburtsdatum = geburtsdatum;
        this.id = id;
    }

    // Methoden
        // "Getter und Setter" für Zugriff auf die Klassenattribute
    public List<Adresse> getAdressListe() {
        return adressListe;
    }

    public void setAdressListe(List<Adresse> adressListe) {
        this.adressListe = adressListe;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getVorname() {
        return vorname;
    }

    public void setVorname(String vorname) {
        this.vorname = vorname;
    }

    public String getGeburtsdatum() {
        return geburtsdatum;
    }

    public void setGeburtsdatum(String geburtsdatum) {
        this.geburtsdatum = geburtsdatum;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String toString() {
        return "ID [" + this.id + "] " + this.name + ", " + this.vorname + " *" + this.geburtsdatum + ", wohnt in "
                + adressListe;
    }

Klasse Adresse:
public class Adresse{

    // Attribute
    private int plz;
    private String ort;
    private String strasse;

    // Konstruktor
    public Adresse(int plz, String ort, String strasse) {
        this.plz = plz;
        this.ort = ort;
        this.strasse = strasse;
    }

    // Methoden
    public int getPlz() {
        return plz;
    }

    public void setPlz(int plz) {
        this.plz = plz;
    }

    public String getOrt() {
        return ort;
    }

    public void setOrt(String ort) {
        this.ort = ort;
    }

    public String getStrasse() {
        return strasse;
    }

    public void setStrasse(String strasse) {
        this.strasse = strasse;
    }

    public String toString() {
        return  + this.plz + " " + this.ort + ", " + this.strasse;
    }

    public void addAdresse(Adresse adresse) {
        // TODO Auto-generated method stub
        
    }
}

Die Konsole liefert mir für:
Main:
public class Mainprogramm {

    public static void main(String[] args) {

        Kartei freund = new Kartei();
        
        Adresse adresse1 = new Adresse(12111, "Städtle", "Straße 1");
        Adresse adresse2 = new Adresse(13211, "Neudorf", "Straße 2");
        Adresse adresse3 = new Adresse(72115, "Golddorf", "Schönestr. 5");
    
        Freund freund1 = new Freund("Lustig", "Peter", "09.09.1949", 1);
        Freund freund2 = new Freund("Zornig", "Jürgen", "08.08.1988", 2);
        
        freund1.getAdressListe().add(adresse1);
        freund1.getAdressListe().add(adresse2);
        freund2.getAdressListe().add(adresse3);
        
        freund.addFreund(freund1);
        freund.addFreund(freund2);
            
        freund.ausgabe();
        
}
}

folgenden Output:

Freund wurde hinzugefügt!
Freund wurde hinzugefügt!
ID [1] Lustig, Peter *09.09.1949, wohnt in [12111 Städtle, Straße 1, 13211 Neudorf, Straße 2]
ID [2] Zornig, Jürgen *08.08.1988, wohnt in [72115 Golddorf, Schönestr. 5]
 
kneitzel

kneitzel

Top Contributor
Das sieht auf den ersten Blick soweit gut aus. Wenn Du aber als Regel das "mind. 1 Adresse" haben willst, dann musst Du das natürlich erzwingen.

a) Es darf dann nicht möglich sein, einen Freund anzulegen ohne Adresse. => Im Konstruktor müsste eine Adresse übergeben werden.
b) Die Liste mit den Adressen wird nicht nach außen gegeben und es gibt keinen Setter! (Die Variable sollte auch final sein) Das würde ja ein Umgehen der Regel ermöglichen (Jemand löscht z.B. alle Adressen.)
Um eine Liste von Adressen heraus zu geben, könnte man sowas machen:
Java:
    public List<Adresse> getAdressListe() {
        return Collections.unmodifiableList(adressListe);
    }
Es wird dann eine neue read-only List zurück gegeben.
Und zur Anpassung gibt es dann addAddress und removeAddress Methoden.

Das wäre, was mir so den ersten Blick auffällt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Objekte in einer LinkedList sortieren Java Basics - Anfänger-Themen 5
M Gemeinsame Objekte in LinkedList Java Basics - Anfänger-Themen 10
S LinkedList nur eins der Objekte aufrufen? Java Basics - Anfänger-Themen 4
J Zwei Objekte vergleichen Java Basics - Anfänger-Themen 6
L Werte von Objekte addieren Java Basics - Anfänger-Themen 14
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
G Methoden Informationen aus zwei Objekte bekommen? Java Basics - Anfänger-Themen 6
P Globale Objekte Java Basics - Anfänger-Themen 2
C Nachträglich neue grafische Objekte hinzufügen Java Basics - Anfänger-Themen 7
D Interaktion zweier Objekte Java Basics - Anfänger-Themen 5
M Objekte in Array speichern und ausgeben Java Basics - Anfänger-Themen 17
S Objekte indiziert erstellen Java Basics - Anfänger-Themen 27
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
M Objekte mittels equals vergleichen Java Basics - Anfänger-Themen 14
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
N Typebound Objekte einer Arraylist hinzufügen Java Basics - Anfänger-Themen 7
A (Objekte Java Basics - Anfänger-Themen 6
Y Klassen Klassen und Objekte Java Basics - Anfänger-Themen 3
Y Klassen Klassen und Objekte mit set und get Java Basics - Anfänger-Themen 0
N Methode um Objekte einer Liste hinzuzufügen Java Basics - Anfänger-Themen 1
G Java Objekte auf Duplikate testen Java Basics - Anfänger-Themen 4
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12
M Implementieren einer Datenstruktur, welche nur 5 Objekte speichert Java Basics - Anfänger-Themen 3
M Objekte miteinander vergleichen Java Basics - Anfänger-Themen 18
C Verschiedene Objekte in einer Liste speichern Java Basics - Anfänger-Themen 6
J Java GUI- Objekte Position per Quelltext bestimmen Java Basics - Anfänger-Themen 4
G Objekte in Methoden? Java Basics - Anfänger-Themen 13
H Auf Objekte bzw Variabeln aus einer anderen Methode zugreifen Java Basics - Anfänger-Themen 7
S Frage Klasse und Objekte Java Basics - Anfänger-Themen 2
K Boolean in einer Methode um 2 Objekte zu vergleichen Java Basics - Anfänger-Themen 12
I Objekte Hilfe Java Basics - Anfänger-Themen 8
G Klassen und Objekte Java Basics - Anfänger-Themen 2
W Verschachtelte Objekte wieder auspacken Java Basics - Anfänger-Themen 3
R Attribute mehrerer Objekte ausgeben Java Basics - Anfänger-Themen 3
C Objekte und Konstruktoren Java Basics - Anfänger-Themen 2
F Erstellen zweier Objekte mit dem selben Inhalt Java Basics - Anfänger-Themen 1
O ObjectOutputStream Anzahl Objekte festhalten Java Basics - Anfänger-Themen 17
R Objekte aus Array als String + kommasepariert speichern Java Basics - Anfänger-Themen 12
X Objekte einer ArrayList richtig ausgeben? Java Basics - Anfänger-Themen 8
J Best Practice Dateiinhalte validieren und auf Objekte mappen Java Basics - Anfänger-Themen 3
B Automatisch Objekte erzeugen mit verschiedenen Namen Java Basics - Anfänger-Themen 4
der_Schokomuffin Hilfe gesucht beim Thema Objekte übergeben! Java Basics - Anfänger-Themen 2
S Konstruktor, Objekte Java Basics - Anfänger-Themen 4
PaperHat Objekte in Array vergleichen Java Basics - Anfänger-Themen 9
B HTML Code / Seite auslesen und JAVA Objekte erstellen Java Basics - Anfänger-Themen 12
PaperHat Programmieraufgabe - Objekte in Objekten Java Basics - Anfänger-Themen 2
E Methode mit Parametern um Objekte zu übergeben Java Basics - Anfänger-Themen 4
V Collections Objekte einer ArrayList in der main() ausgeben Java Basics - Anfänger-Themen 9
T Klassen Klassenübergreifende Objekte erstellen lassen Java Basics - Anfänger-Themen 5
A Objekte verknüpfen Java Basics - Anfänger-Themen 2
M Objekte mit einer Schleife mehrmals erzeugen Java Basics - Anfänger-Themen 17
B Klassen Alle Unter-Objekte durchlaufen in der Hauptklasse Java Basics - Anfänger-Themen 10
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
S Zählen der Zeiger auf Objekte Java Basics - Anfänger-Themen 35
J Methoden Equals Methode für Integer und Objekte überschreiben? Java Basics - Anfänger-Themen 9
B Erste Schritte Objekte von JFrame der Fenstergröße anpassen Java Basics - Anfänger-Themen 3
M Klassen und Objekte Java Basics - Anfänger-Themen 2
J Objekte und Abstrakte Klassen Java Basics - Anfänger-Themen 2
J Array Objekte einer Klasse zuordnen Java Basics - Anfänger-Themen 15
H Interface Objekte speichern und laden (serialisieren/deserialisieren) Java Basics - Anfänger-Themen 1
Orkanson Objekte in ein Array einfügen Java Basics - Anfänger-Themen 5
X Objekte in ArrayList einfügen Java Basics - Anfänger-Themen 10
L Vorherige Objekte zählen und ausgeben Java Basics - Anfänger-Themen 11
Orkanson Objekte und Klassen Java Basics - Anfänger-Themen 8
R Objekte zur Laufzeit in Schleife erzeugen und in ArrayList ablegen Java Basics - Anfänger-Themen 4
D Objekte-Fragen Java Basics - Anfänger-Themen 1
T Objekte in der Methode Java Basics - Anfänger-Themen 8
F Alle Objekte einer Klasse nach Eigenschaft durchsuchen Java Basics - Anfänger-Themen 8
R Interface Eigene Objekte in Listen sortieren mit Interface Comparable Java Basics - Anfänger-Themen 5
E Eine Instanzvariable und zwei Objekte Java Basics - Anfänger-Themen 14
N Objekte in ArrayList finden Java Basics - Anfänger-Themen 10
K Comparable - Objekte aus Array vergleichen und größtes auswählen Java Basics - Anfänger-Themen 1
R getrennte Objekte aus Klasse erstellen : warum Inhalt dann gleich ? Java Basics - Anfänger-Themen 2
T Objekte in Listen vererben Java Basics - Anfänger-Themen 3
E Methoden Objekte in Methode aufrufen ohne getter und setter? Java Basics - Anfänger-Themen 1
A Variablen In anderer Klasse auf Objekte von JFrame zugreifen Java Basics - Anfänger-Themen 1
R Objekte Vergleichen und Sortieren Java Basics - Anfänger-Themen 3
BobbGott Klassen 2 "Objekte" in einer Methode - wie? Java Basics - Anfänger-Themen 7
S Objekte mit gleichem Namen in unterschiedlichen Klassen Java Basics - Anfänger-Themen 3
S Objekte "gegebenfalls" erzeugen Java Basics - Anfänger-Themen 5
F Klassen Zugriff auf verschachtelte Objekte Java Basics - Anfänger-Themen 11
H Objekt überschreibt Variablen vorheriger Objekte Java Basics - Anfänger-Themen 2
snipesss Objekte Java Basics - Anfänger-Themen 14
tuc Erste Schritte verschiedene objekte in einem feld speichern Java Basics - Anfänger-Themen 4
J Objekte in einer Liste Java Basics - Anfänger-Themen 3
D Mehrere Objekte in ein Objekt zusammenfassen Java Basics - Anfänger-Themen 16
W OOP Zwei Objekte beziehen sich aufeinander (Zirkelbezug)? Java Basics - Anfänger-Themen 4
D Objekte mit verschiedenen Attributen erstellen Java Basics - Anfänger-Themen 3
A OOP Zugriff auf Objekte von außen Java Basics - Anfänger-Themen 8
T Objekte mit Verhalten Java Basics - Anfänger-Themen 14
Z OOP Objekte einer Klasse weiteren Klassen zur Verfügung stellen Java Basics - Anfänger-Themen 17
T Objekte erstellen Java Basics - Anfänger-Themen 2
D Methoden Wie können Klassen auf Klassenfremde Objekte zugreifen? Java Basics - Anfänger-Themen 7
G Datentypen verschiedene Objekte in eine ArrayList, Generics Java Basics - Anfänger-Themen 2
D Statische Objekte mit variablem Parameter Java Basics - Anfänger-Themen 1
K Mehrere Objekte anlegen Java Basics - Anfänger-Themen 23
S Objekte klonen und Deep Copy Java Basics - Anfänger-Themen 30
D Objekte in Liste eintragen Java Basics - Anfänger-Themen 4
H Mit Schleife erstellte gleichnamige Objekte einzeln anwählen? Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Anzeige

Neue Themen


Oben