Objekte in LinkedList löschen und editieren

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??
[CODE lang="java" title="Methodenaufruf in der Main"]freund.deleteObj("Bauer");[/CODE]
[CODE lang="java" title="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;
}[/CODE]


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
K
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...
K

kneitzel

Gast
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....
 

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. :(
 
K

kneitzel

Gast
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.
 

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.
 

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!!!

[CODE lang="java" title="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;
}

}[/CODE]

[CODE lang="java" title="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);

}[/CODE]

[CODE lang="java" title="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;
}[/CODE]

[CODE lang="java" title="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.

}

}[/CODE]
 
Zuletzt bearbeitet:

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:

[CODE lang="java" title="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;
}[/CODE]

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.
 

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
 
K

kneitzel

Gast
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
 

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
[CODE lang="java" title="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;
}[/CODE]
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.
[CODE lang="java" title="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();

}
}[/CODE]

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.
 
K

kneitzel

Gast
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

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. 👍👍👍
 

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.

[CODE lang="java" title="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);
}
}
}
[/CODE]
[CODE lang="java" title="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;
}

[/CODE]

[CODE lang="java" title="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

}
}
[/CODE]

Die Konsole liefert mir für:
[CODE lang="java" title="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();

}
}
[/CODE]

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]
 
K

kneitzel

Gast
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
D Initialisierung von Klassen-Objekte Java Basics - Anfänger-Themen 47
W Objekte erzeugen Httprequest oder Httpclient Java Basics - Anfänger-Themen 3
richis-fragen Kann Arrays.stream() auch auf Objekte angewant werden? Java Basics - Anfänger-Themen 10
krgewb Über Objekt, das Objekte desselben Typs enthält iterieren Java Basics - Anfänger-Themen 5
I Zapier -> wie werden Objekte gespeichert? Java Basics - Anfänger-Themen 10
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
K Hab ich dass so richtig erklärt (Objekte und Referenzen)? Java Basics - Anfänger-Themen 5
J Objekte in JSON speichern?? Java Basics - Anfänger-Themen 1
I Objekte in ShareProject speichern um später zu nutzen Java Basics - Anfänger-Themen 4
J Objekte Java Basics - Anfänger-Themen 22
T Objekte mit arrays erstellen Java Basics - Anfänger-Themen 6
Hzrfa Objekte, Referenz Java Basics - Anfänger-Themen 5
T 3D Objekte verarbeiten Java Basics - Anfänger-Themen 2
N Welche Objekte kann man zu einem Set hinzufügen Java Basics - Anfänger-Themen 4
I XML einlesen und Objekte bekommen Java Basics - Anfänger-Themen 2
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
Encera Zugriff auf Map-Objekte Java Basics - Anfänger-Themen 3
E Objekte löschen Java Basics - Anfänger-Themen 9
P Array-Objekte-Aufruf Java Basics - Anfänger-Themen 22
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
P Zähler Variable für mehrere Objekte Java Basics - Anfänger-Themen 6
B Objekte verschwinden beim Übersetzen Java Basics - Anfänger-Themen 5
D Zwei verschiedene Intellij Projekte, wie benutze ich wechselseitig objekte Java Basics - Anfänger-Themen 8
E Rekursiv Objekte erzeugen - geht das? Java Basics - Anfänger-Themen 2
T Collections Sind Subklassen-Objekte in Listen mit Generics erlaubt? Java Basics - Anfänger-Themen 16
F Aus eingelesener Datei korrekt Objekte erzeugen Java Basics - Anfänger-Themen 5
G Übergeordnete Objekte abrufen Java Basics - Anfänger-Themen 9
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
A Objekte mit Parametern in eine Liste packen Java Basics - Anfänger-Themen 19
B Objekte, bspw. konkret Arraylists,manuell aus Speicher löschen? Java Basics - Anfänger-Themen 70
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
D Wie Objekte im JFrame frei bewegen lassen? Java Basics - Anfänger-Themen 3
Spandeli8 Erzeugte Objekte gegenüber Bildern hervorheben in Java Processing Java Basics - Anfänger-Themen 1
J Zwei Objekte vergleichen Java Basics - Anfänger-Themen 8
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

Ähnliche Java Themen

Neue Themen


Oben