• Wir präsentieren Dir heute ein Stellenangebot für einen Java Entwickler - m/w/d in Augsburg, München, Stuttgart oder Bamberg. Hier geht es zur Jobanzeige

Großeltern herausfinden Java - Map?

mr.kottig

mr.kottig

Neues Mitglied
Hallöchen. ich habe die Aufgabe bekommen in Java die Großeltern einer bestimmten Person (z.B. Kevin) herauszufinden.

Ausgangslage:
  • Claudia ist die Tochter von Paul und Maria
  • Peter ist der Sohn von John und Anne
  • Kevin ist der Sohn von Claudia und Peter
  • Jane ist die Tochter von Claudia und Peter
Nun bin ich schon mehrfach über die DS Map gestolpert, aber ich weiß nicht wie/ in welcher Form ich das konkret auf die Aufgabe anwenden soll. Irgendwelche Ratschläge?
 
J

Joreyk

Bekanntes Mitglied
versuch mal eine baumstruktur mit hilfe deiner personen zu erzeugen

class person
String name
String gender
List<Person> kinder
getChildren -> liefert die Liste

dann probierst du für jede Person diese Reihe aus:
1. person getChildren -> dann for each element nochmal getchildren -> falls es alles leer ist abbruch
2. in der for each nochmal getChildren -> falls für jedes getChildren leer ist -> abbruch
3. falls irgend eine Person beim zweiten Durchlauf ein Kind hat -> es muss ein Großeltern Teil sein
 
Robert Zenz

Robert Zenz

Bekanntes Mitglied
versuch mal eine baumstruktur mit hilfe deiner personen zu erzeugen
Nur um kurz klugzuscheiszern: Familienbaeume sind schlecht als Trees darstellbar, es sind mehr ungerichtete Graphen.

class person
String name
String gender
List<Person> kinder
getChildren -> liefert die Liste
Gefaellt mir. Man koennte noch die Verweise auf die Eltern mit hinein nehmen beim aufbauen, dann kann man das an irgendeiner Stelle betreten, zwei Elteren hoeher gehen und hat die Groszeltern.
 
mr.kottig

mr.kottig

Neues Mitglied
Vielen Dank für die Rückmeldung ihr Beiden!
Ich muss glaube ich muss nicht dazu sagen, dass ich noch absolut auf dem Schlauch stehe, wenn ich euch meinen bisherigen Code präsentiere..

Java:
public class Person {

    String name;
    String gender;
    List<Person> kinder;

  public Person(String name, String gender) {
        this.name = name;
        this.gender = gender;

    }
   
    public List<Person> getKinder() {
        return kinder;
    }
}

##############################

Java:
public class MainGroßeltern {

    public static void main(String[] args) {
      
        Person claudiaPerson = new Person("Claudia","female");
        Person peterPerson = new Person("Peter","male");
        Person johnPerson = new Person("John","male");
        Person annePerson = new Person("Anne","female");
        Person kevinPerson = new Person("Kevin","male");
        Person janePerson = new Person("Jane","female");

        List<Person> kinder = new ArrayList<>();
        kinder.add(claudiaPerson);
        kinder.add(peterPerson);
        kinder.add(johnPerson);
        kinder.add(annePerson);
        kinder.add(kevinPerson);
        kinder.add(janePerson);

       
        for (Person person : kinder) {
            System.out.println(person.getKinder());
        }      
    }
}
 
Zuletzt bearbeitet von einem Moderator:
N

Neumi5694

Bekanntes Mitglied
1. Code bitte immer mit dem Code-Tag posten
2. Schaut doch schon mal grundsätzlich nicht schlecht aus. Alerrdings wirst du nicht glücklich werden, wenn du die Beschreibung des Listenobjekts ausgeben lässt anstatt die darin enthaltenen Elemente. Person.getKinder() ist nämlich kein Text, sondern eine Liste von Person-Objekten.

Deiner Klasse "Person" fehlt noch die Information, wer die Eltern sind. D.h. so wie eine Liste der Kinder gibt es auch eine Liste der Eltern (besser noch wäre ein Set, damit du ein Kind oder ein Elternteil nicht zweimal hinzufügen kannst).

Wie wäre es, wenn du den direkten Zugriff auf die Liste durch eine Methode namens addChild(Person p) ersetzt?
Die macht dann folgendes:
Java:
void addChild(Person p) {
   this.kinder.add(p);
   p.addParent(this);
}

Edit: Huch, das hab ich ja ganz übersehen ... Du erstellst in deinem Mainprogramm ein Liste Kinder .... wozu?
(Anm: Ich geh im Folgenden davon aus, dass du den Zugriff auf die Klassenvariable Kinder durch Methoden regelst)

Du willst das Kind doch einer bestimmten Person zuweisen und keine generelle Liste von Kindern haben.
Richtig wäre

Java:
claudiaPerson.addChild(kevinPerson).
Damit wird der Kinder-Liste im claudiaPerson-Objekt das Elekent kevinPerson hinzugefügt. Und falls du meinen vorigen Vorschlag umgesetzt hast, ist dann auch Claudia ein Element von kevinPerson.getParents()

ps: Du lässt hier grundsätzlich Schreibzugriff auf die Liste von außen zu.
Java:
claudiaPerson.getChildren().add(kevinPerson);
kevinPerson.getParents().add(claudiaPerson;

würde auch funktionieren (anstatt addChild und addParent), damit hast du aber eine neue mögliche Fehlerquelle.
 
Zuletzt bearbeitet:
1

123neu

Bekanntes Mitglied
In Prolog wäre das irgendwie so bin mir aber nicht mehr sicher:
Code:
mutter(maria, claudia).
vater(paul, claudia).
mutter(anne, peter).
vater(john, peter).
mutter(claudia, kevin).
vater(peter, kevin).
mutter(claudia, jane).
vater(peter, jane).

eltern(X,Y,Z) :- mutter(X,Z), vater(Y,Z).
grosseltern(A,B,C,D,X) :- eltern(A,B,Y), eltern(C,D,Z), eltern(X,Y,Z).

/** <examples>

?- grosseltern(a,b,c,d,kevin).

*/
 
J

Joreyk

Bekanntes Mitglied
In Prolog wäre das irgendwie so bin mir aber nicht mehr sicher:
Code:
mutter(maria, claudia).
vater(paul, claudia).
mutter(anne, peter).
vater(john, peter).
mutter(claudia, kevin).
vater(peter, kevin).
mutter(claudia, jane).
vater(peter, jane).

eltern(X,Y,Z) :- mutter(X,Z), vater(Y,Z).
grosseltern(A,B,C,D,X) :- eltern(A,B,Y), eltern(C,D,Z), eltern(X,Y,Z).

/** <examples>

?- grosseltern(a,b,c,d,kevin).

*/
prolog ist nicht java.. prolog ist dafür da "alles auszuprobieren"
 
J

Joreyk

Bekanntes Mitglied
Was sinnvoll wäre ist bei add Children eine überprüfugn rein zu tun

wenn man eins hinzufügt -> isParent auf true setzen
wenn man ein kind weg nimmt -> schauen ob man noch eins hat wenn nein auf false

dann bei der überprüfugn nur noch das isParent durchgehen
das "getChildren" war so gedacht:

du bekommst eine liste von personen und bei allen ürofst du durch ob die auch kinder haben wenn eins davon auch ein kind hat dann kann man sagen dass es ein großeltern teil ist
 
J

Joreyk

Bekanntes Mitglied
Nur um kurz klugzuscheiszern: Familienbaeume sind schlecht als Trees darstellbar, es sind mehr ungerichtete Graphen.


Gefaellt mir. Man koennte noch die Verweise auf die Eltern mit hinein nehmen beim aufbauen, dann kann man das an irgendeiner Stelle betreten, zwei Elteren hoeher gehen und hat die Groszeltern.
ich wollte das "has Parent" nicht einbauen also dass man immer nur tiefer gehen kann aber niemand weis wer seine eltern sind oder ob man welche hat deswegen baum und nicht ungerichtet :D
 
1

123neu

Bekanntes Mitglied
prolog ist dafür da "alles auszuprobieren"
Man nennt es auch Resolution.

Hier nochmal richtig...

Code:
male(paul).
male(john).
male(peter).
male(kevin).
female(claudia).
female(anne).
female(maria).
female(jane).

parent(maria, claudia).
parent(paul, claudia).
parent(anne, peter).
parent(john, peter).
parent(claudia, kevin).
parent(peter, kevin).
parent(claudia, jane).
parent(peter, jane).

grand_parent(X, Y) :- parent(Z, X), parent(Y, Z).
omas(X, Y) :- female(Y), parent(Z, X), parent(Y, Z).
opas(X, Y) :- male(Y), parent(Z, X), parent(Y, Z).

/** <examples>
?- grand_parent(kevin, A).
?- omas(kevin, B).
?- opas(kevin, C).
*/

ausprobieren könnt ihr ihn hier: https://swish.swi-prolog.org/
 
Zuletzt bearbeitet:
1

123neu

Bekanntes Mitglied
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Herausfinden, auf welchem Panel des CardLayouts man gerade ist? Java Basics - Anfänger-Themen 12
L Breadth-First Search statt einem Pfad, alle Pfade herausfinden Java Basics - Anfänger-Themen 4
T Return einer anderen Methode herausfinden Java Basics - Anfänger-Themen 9
F Alle Zeichenkombinationen eines Strings iterativ herausfinden Java Basics - Anfänger-Themen 26
Dilara_K Abstand zwischen den Doppelwerten in einem Array herausfinden Java Basics - Anfänger-Themen 20
K die Source eines Events bei verschiedenen Quellen herausfinden Java Basics - Anfänger-Themen 1
J Die Zahl herausfinden die durch 2 - 30 Teilbar ist... Java Basics - Anfänger-Themen 17
WetWer Herausfinden wer Tic Tac Toe gewonnen hat Java Basics - Anfänger-Themen 4
H Erste Schritte Längstes Wort eines Strings herausfinden Java Basics - Anfänger-Themen 7
Y Rekursiv Palindrom herausfinden Java Basics - Anfänger-Themen 5
Z Wie Position eines Objekts in Liste herausfinden? Java Basics - Anfänger-Themen 15
T Wie kann man den Klassentyp eines Objektes in Java herausfinden? Java Basics - Anfänger-Themen 4
J Erste Schritte Zweithöchster Wert eines Arrays herausfinden - warum klappt mein Code nicht? Java Basics - Anfänger-Themen 3
M Windowsbenutzernamen herausfinden? Java Basics - Anfänger-Themen 6
K Vererbung Zuweisungsfehler (Kompilier- und Laufzeitfehler) herausfinden Java Basics - Anfänger-Themen 3
A 10001-te Primzahl herausfinden Java Basics - Anfänger-Themen 5
Helgon Aufgerufene URL herausfinden Java Basics - Anfänger-Themen 6
J Herausfinden der Systemfont Java Basics - Anfänger-Themen 4
S Vererbung/Herausfinden welches Objekt von welcher Klasse Java Basics - Anfänger-Themen 4
P Vererbung herausfinden welche Klasse was erbt Java Basics - Anfänger-Themen 3
B Binärbaum höhe herausfinden Java Basics - Anfänger-Themen 12
E Gründe einer NotSerializableException herausfinden Java Basics - Anfänger-Themen 7
F Container Objekt herausfinden Java Basics - Anfänger-Themen 15
N Herausfinden ob setIcon gesetzt wurde Java Basics - Anfänger-Themen 8
R Mittelpunkt von Bounding Box herausfinden Java Basics - Anfänger-Themen 3
K Änderungsdatum einer Website herausfinden Java Basics - Anfänger-Themen 6
F Inhalt einer Variable per Code herausfinden? Java Basics - Anfänger-Themen 9
M Ordner der jar Datei herausfinden und Partent durchsuchen Java Basics - Anfänger-Themen 4
R Java Version herausfinden..? Java Basics - Anfänger-Themen 1
G Gesamten clickCount mehrerer JPanels herausfinden Java Basics - Anfänger-Themen 5
G Herausfinden, welche Componente als LETZTES focus hatte Java Basics - Anfänger-Themen 2
K itemlistener item index herausfinden Java Basics - Anfänger-Themen 4
G Position eines Objekts auf Webseite herausfinden Java Basics - Anfänger-Themen 9
Horst79 Rootverzeichnis herausfinden im Java-Applett? Java Basics - Anfänger-Themen 5
S Unbenutzte/überflüssige Getter/Setter herausfinden? Java Basics - Anfänger-Themen 2
J Methoden zu gegebenem main herausfinden Java Basics - Anfänger-Themen 22
M Rest herausfinden Java Basics - Anfänger-Themen 2
L wie den pfad zu meiner datei herausfinden? Java Basics - Anfänger-Themen 2
M Klassenpfad herausfinden Java Basics - Anfänger-Themen 4
G Verzeichnis herausfinden Java Basics - Anfänger-Themen 3
G erstes Zeichen eines Strings herausfinden Java Basics - Anfänger-Themen 3
G Applikationspfad herausfinden Java Basics - Anfänger-Themen 10
T Ordner herausfinden, aus dem das Programm aufgerufen wird Java Basics - Anfänger-Themen 5
G Herausfinden, wann mehrere Threads abgeschlossen sind Java Basics - Anfänger-Themen 3
A Mitte des Bildschirms herausfinden Java Basics - Anfänger-Themen 4
G Herausfinden ob Webdatei existiert Java Basics - Anfänger-Themen 4
S JFrame Location herausfinden Java Basics - Anfänger-Themen 4
D Name eines Terminals herausfinden Java Basics - Anfänger-Themen 3
M Verzeichnis der main Klasse herausfinden Java Basics - Anfänger-Themen 7
G länge einer audiodatei herausfinden Java Basics - Anfänger-Themen 3
M Herausfinden von welchem Pfad aus ein Prog gestartet wurde Java Basics - Anfänger-Themen 4
D Benutzername herausfinden Java Basics - Anfänger-Themen 5
F Root-Pfad der Java-Anwendung herausfinden Java Basics - Anfänger-Themen 1
L Wie herausfinden ob JList Elemente hinzugefügt wurden? Java Basics - Anfänger-Themen 6
G Installationsverzeichnis herausfinden Java Basics - Anfänger-Themen 4
F Arbeitstage eines Monats herausfinden Java Basics - Anfänger-Themen 22
R In ResultSet Anzahl der Zeilen herausfinden? Java Basics - Anfänger-Themen 3
J Rest einer Zahl herausfinden Java Basics - Anfänger-Themen 3
R Aktuelle URL herausfinden Java Basics - Anfänger-Themen 5
J Datum, Tage herausfinden Java Basics - Anfänger-Themen 2
S Java TelephoneBookEntry search Java Basics - Anfänger-Themen 2
S Algorithmus java searchAll IKey Java Basics - Anfänger-Themen 4
Der Grütz Verständnisfrage zu Übung aus Java Kurs - Schaltjahr bestimmen Java Basics - Anfänger-Themen 2
F Frage betreff Programm mit dem man C++-Code in JAVA-Code übersetzen lassen kann Java Basics - Anfänger-Themen 2
L Brüche in java Java Basics - Anfänger-Themen 7
L Java operator % Java Basics - Anfänger-Themen 3
rafi072001 Integer Anomalie Java Java Basics - Anfänger-Themen 7
H Java file nicht gefunden Java Basics - Anfänger-Themen 5
M Packages erstellen mit Java-Editor Java Basics - Anfänger-Themen 6
L Java erstellt leere Datei Java Basics - Anfänger-Themen 8
D Java Übungsaufgaben Java Basics - Anfänger-Themen 6
A Standardabweichung in Java berechnen Java Basics - Anfänger-Themen 10
H Java fx Java Basics - Anfänger-Themen 3
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
M Java Anfang Java Basics - Anfänger-Themen 13
D Java Thread wartet nur ein mal Java Basics - Anfänger-Themen 1
D Java Thread wartet nur ein mal Java Basics - Anfänger-Themen 0
I Java auf der Konsole Java Basics - Anfänger-Themen 5
T Die neuste Java jee Java Basics - Anfänger-Themen 12
Spandeli8 Erzeugte Objekte gegenüber Bildern hervorheben in Java Processing Java Basics - Anfänger-Themen 1
G Java Hilfe Java Basics - Anfänger-Themen 3
johnboyne Java Zeichen Trennen Java Basics - Anfänger-Themen 1
I Java Quicksort PAP Java Basics - Anfänger-Themen 2
K Buchstabenzähler Java (Anfänger) Java Basics - Anfänger-Themen 35
J Java List, Bitte um Hilfe Java Basics - Anfänger-Themen 15
J Java List, bitte um Hilfe Java Basics - Anfänger-Themen 3
E Kleines Java-Projekt für Anfänger Java Basics - Anfänger-Themen 10
A Schleifen in Java Java Basics - Anfänger-Themen 4
Alan6 Java Editor BMI Rechner Java Basics - Anfänger-Themen 7
C java.sql Statement kann nicht geschlossen werden Java Basics - Anfänger-Themen 9
A Java die richtige Programmiersprache für mein Projekt? Java Basics - Anfänger-Themen 1
P myClass?.method() in Java Java Basics - Anfänger-Themen 4
I Java String einlesen und auslesen Java Basics - Anfänger-Themen 11
Marc111111111 Selection Sort in Java?? Java Basics - Anfänger-Themen 6
NicoDeluxe Java RAM Management Java Basics - Anfänger-Themen 26
N Groß- und Kleinschreibung bei Java: void Methode Java Basics - Anfänger-Themen 1
T SelectionSort Java Java Basics - Anfänger-Themen 1
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
T Java Fx Java Basics - Anfänger-Themen 4
J Alle .java Dateien von einem Verzeichnis in eine Zip speichern Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Anzeige

Neue Themen


Oben