Klassen Zugriff auf verschachtelte Objekte

flojava

Mitglied
Hallo Leute,

ich komme aus der PHP-Welt und tu mir noch etwas schwer wie mehrdimensionale Arrays in Java umgesetzt werden. Da ich gelesen habe, dass man in Java hierzu eher Objekte einsetzt, hier mein Ansatz:

Die Datenstruktur

word: katze
____wordDescription: Tier macht miau
____wordDescription: Tier klettert auf Bäume
word: hund
____wordDescription: Tier bellt
____wordDescription: Tier wedelt mit dem Schwanz
____wordDescription: Tier geht gern Gassi

Jeder Datensatz besteht aus einem "word" und einer beliebigen Anzahl von "wordDescription"

Meine gewählte Klassenstruktur

Klasse Word: Besteht aus den Eigenschaften "word " (ist ein String, Beispiel: katze) und "wordDescription" (ist eine ArrayList "Beispiel: Tier macht miau, Tier kletter auf Bäume ...)

Klasse WordList: Das ist eine (Sammel)Klasse für die Objekte Word die aus der Eigenschaft allWords (ist eine List<Objects>) besteht.

Frage
Im Anhang seht Ihr aus dem Debugging-Tool von Eclipse wie die gefüllte Datenstruktur aussieht. Mir ist nun nicht klar wie ich auf die Daten "word" und "wordDescriptions" zugreifen kann.

Hier noch die Übersicht der main-Klasse:

Java:
public static void main(String[] args){       
       
        Word katze = new Word("katze");
       
        katze.addWordDescription("Tier macht miau");
        katze.addWordDescription("Tier kuschelt gerne");
           
        WordList neueListe = new WordList();
        neueListe.addWord(katze);
   
    }

Vielen Dank für Eure Unterstützung und schöne Grüße
Florian
 

Anhänge

  • screenshot.jpg
    screenshot.jpg
    44,5 KB · Aufrufe: 38
N

neoexpert

Gast
getWordDescription in der Klasse "Word" wird dann so aussehen:
Java:
public E getWordDescription(int p){return wordDrscriptions.get(p);}
Ich denke E ist bei dir String oder?
 
Zuletzt bearbeitet von einem Moderator:
N

neoexpert

Gast
Aber deine Frage war zu den Mehrdimensionalen Arrays. Arrays in Java haben eine Feste grösse. Will man dynamische grösse haben kann man, wie du es schon tust: ArrayList oder andere Collections verwenden. Mehrdimensionale Liste kann man z.B. als Liste von Listen implementieren:
Java:
ArrayList<ArrayList<Object>> l= new ArrayList<ArrayList<Object>>();
l.add(new ArrayList<Object>());
l.get(0).add("wort");
Object o=l.get(0).get(0);
boolean b=o instanceof String;
if(o){
String s=(String)o;
}
 
Zuletzt bearbeitet von einem Moderator:

flojava

Mitglied
Hallo neoexpert,

vielen Dank für Deine superschnelle Antwort. Ich hab es mit diesem Hinweis "neueListe.get(0).getWordDescription(0);" hinbekommen. Allerdings hatte ich noch ein Fehler in der Klasse WordList. Hier hatte ich als Rückgabewert List<Object> statt List<Word> angegeben.

Schöne Grüße
Florian
 
N

neoexpert

Gast
Ok. Java mag im Vergleich zu php wenige vorteile mitbringen und dann auch noch so kompliziert erscheinen. In PHP kann man ja z.B. assoziative arrays sehr einfach implementieren:
PHP:
$a=new Array();
$a["name"]="peter";
In Java kann man das auch machen aber nicht so schön wie in PHP:
Java:
Map<String,String>=new HashMap<String,String>();
map.put("name","peter");
Allerdings kann man in Java auch Objects anstelle von Strings verwenden:
HashMap<Point,Object>
So kann man z.B. jedem Punkt im Raum einen Object zuweisen. Auf den man sehr schnell zugreifen kann: HashMap basiert auf einem Array.
Die klasse Point muss allerdings die Methode equals überschreiten, aber dazu später mehr.
 

Flown

Administrator
Mitarbeiter
Da du ja deine Datenstruktur schon selbst gewählt hast, würde ich dir noch raten die WordList als eine built-in Liste zu halten, dann sieht dein Code eventuell so aus:
Java:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Objects;

public class Test {
  public static void main(String... args) {
    Word katze = new Word("katze");
    katze.addDescription("Tier macht miau");
    katze.addDescription("Tier klettert auf Bäume");
    
    Word hund = new Word("hund");
    hund.addDescription("Tier bellt");
    hund.addDescription("Tier wedelt mit dem Schwanz");
    hund.addDescription("Tier geht gern Gassi");
    
    List<Word> wordList = Arrays.asList(katze, hund);
    for (Word word : wordList) {
      System.out.println("word: " + word.getWord());
      System.out.println("descriptions: " + word.getDescriptions());
    }
    
    System.out.println(wordList);
  }
}

class Word {
  private final String word;
  private final List<String> descriptions;
  
  public Word(String word) {
    this.word = word;
    this.descriptions = new ArrayList<>();
  }
  
  public String getWord() {
    return word;
  }
  
  public List<String> getDescriptions() {
    return Collections.unmodifiableList(descriptions);
  }
  
  public void addDescription(String description) {
    descriptions.add(description);
  }
  
  @Override
  public int hashCode() {
    return Objects.hash(word, descriptions);
  }
  
  @Override
  public boolean equals(Object obj) {
    if (this == obj) {
      return true;
    }
    if (obj == null) {
      return false;
    }
    if (getClass() != obj.getClass()) {
      return false;
    }
    Word other = (Word) obj;
    if (!Objects.equals(word, other.word)) {
      return false;
    }
    if (!Objects.equals(descriptions, other.descriptions)) {
      return false;
    }
    return true;
  }
  
  @Override
  public String toString() {
    StringBuilder builder = new StringBuilder();
    builder.append("word: ").append(word).append(System.lineSeparator());
    for (String description : descriptions) {
      builder.append("____wordDescription: ").append(description).append(System.lineSeparator());
    }
    return builder.toString();
  }
}
 

flojava

Mitglied
Da du ja deine Datenstruktur schon selbst gewählt hast, würde ich dir noch raten die WordList als eine built-in Liste zu halten, dann sieht dein Code eventuell so aus:

Hallo Flown,

vielen Dank für Dein Feedback. Ich hab gestern Nacht schon weitergearbeitet, daher möchte ich jetzt ungern alles über Bord werfen. Ehrlich gesagt tue ich mir mit Deinem Quellcode auch noch schwer. Ich recherchiere aber weiter zur built-in List und hoffe dass ich dann das Prinzip verstehe ;)

Schöne Grüße

Florian
 

Jardcore

Top Contributor
Build-in Liste heißt hier einfach nur das du ein Objekt hast, welches eine Referenz auf eine Liste hat.
Du kannst das Objekt dann nach der Liste fragen und durch das Objekt die Liste erweitern.
 

flojava

Mitglied
Hallo Jardcore,

ist das ein verbreiteter Begriff? Ich möchte gerne mehr darüber lesen, habe aber bisher nicht darüber gefunden. Letztendlich lande ich immer auf Seiten die ein normale List beschreiben.

Danke und schöne Grüße

Florian
 

Salo

Aktives Mitglied
Sicher?
Wenn du nach, built in list java, suchst, dann ist doch der erste link direkt ein treffer.

Falls dir das nicht reicht, suchst du eben so:
"built-in list" site:eek:racle.com

Achtung! Lass die anführungszeichen drin.
Du kannst natürlich auch noch in anderen seiten suchen, aber oracle.com ist glaub ich die umfangreichste.(es wird ja auchnoch z.Bsp. docs.oracle.com durchsucht):D:)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I In unterschiedlichen Applikation Zugriff auf eine gemeinsame Anwendung? Java Basics - Anfänger-Themen 8
C Zugriff auf Methode Java Basics - Anfänger-Themen 2
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
J Zugriff auf eine 2. Klasse die per UI-Designer erstellt wurde Java Basics - Anfänger-Themen 1
Encera Zugriff auf Map-Objekte Java Basics - Anfänger-Themen 3
T Zugriff auf Control anderer Klasse Java Basics - Anfänger-Themen 5
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
R TreeSet Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 8
C Kein Zugriff auf Klassenmethoden in Main Methode Java Basics - Anfänger-Themen 23
H Zugriff verweigert Java Basics - Anfänger-Themen 5
moiss002 Umgebungsvariable Kein Zugriff auf ein Array Java Basics - Anfänger-Themen 7
B Probleme mit Zugriff auf Dateisystem Windows 10 ( jFileChooser) Java Basics - Anfänger-Themen 17
B Zugriffsmodifier, Zugriff außerhalb Package Java Basics - Anfänger-Themen 5
C Zugriff auf Attribut von Oberklasse Java Basics - Anfänger-Themen 8
P Klasse hat keinen Zugriff auf getter/setter-Methoden eines Objektes Java Basics - Anfänger-Themen 9
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
M Gettter/Setter Methoden Klassenfelder kapselung und zugriff? Java Basics - Anfänger-Themen 1
S Zugriff auf protected Fields = guter Programmierstil? Java Basics - Anfänger-Themen 11
M Pfadprobleme - Zugriff auf einen Ordner im Workspace Java Basics - Anfänger-Themen 17
ruutaiokwu Bluetooth-Zugriff, braucht es dazu plattformabhängige Libraries oder kann das Java mittlerweile selbst? Java Basics - Anfänger-Themen 10
R Zugriff auf den Index eines Arrays, welches ein Objekt ist. Java Basics - Anfänger-Themen 4
M Zugriff auf eine ArrayList in einer anderen Klasse Java Basics - Anfänger-Themen 4
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
L Methoden Zugriff <identifier> expected Java Basics - Anfänger-Themen 13
T Java - Zugriff nur mit CLASSPATH ? Java Basics - Anfänger-Themen 7
B Klassen Zugriff auf ein Objekt einer Klasse aus einer Methode heraus Java Basics - Anfänger-Themen 4
L Zugriff auf Attribute eins Objekts über ActionListener Java Basics - Anfänger-Themen 4
D Zugriff auf Methode einer anderen Klasse Java Basics - Anfänger-Themen 5
S Zugriff auf Objekt Java Basics - Anfänger-Themen 5
A Klassen Zugriff auf Instanzen Java Basics - Anfänger-Themen 2
N ArrayList in eigener Klasse erzeugen mit Zugriff Java Basics - Anfänger-Themen 7
J Zugriff auf Variable in anderem Programm Java Basics - Anfänger-Themen 5
Q Zugriff auf Attribute Java Basics - Anfänger-Themen 3
J Klassen Zugriff auf ein "String Array" Java Basics - Anfänger-Themen 6
H Datentypen ArrayList in ArrayList: Zugriff Java Basics - Anfänger-Themen 6
J get methoden zugriff und objekt erzeugung Java Basics - Anfänger-Themen 30
J Datenbank Zugriff Java Basics - Anfänger-Themen 24
T Zugriff auf JCheckBox Java Basics - Anfänger-Themen 8
E Netzlaufwerk Zugriff schlägt fehl Java Basics - Anfänger-Themen 11
C Group, Actor und Instanz-Zugriff, LibGDX Java Basics - Anfänger-Themen 4
S Zugriff auf Attribut einer unbekannten Klasse erhalten Java Basics - Anfänger-Themen 6
R Methoden Methode der GUI-Klasse Zugriff auf Methoden der Hauptklasse Java Basics - Anfänger-Themen 9
S Vererbung Zugriff auf die Basisklasse einer "zweiten" Erweiterungsklasse Java Basics - Anfänger-Themen 2
Z Threads Threads - Zugriff auf Ressourcen ohne(Lock, Synchronized) Java Basics - Anfänger-Themen 2
S Vererbung Zugriff auf Methode funktioniert nicht (static/non-static) Java Basics - Anfänger-Themen 3
J Sichtbarkeit und Zugriff Java Basics - Anfänger-Themen 9
G Wieviel kostet der Zugriff auf Objektattribute im Vergleich zur Erstellung von vars in Methode? Java Basics - Anfänger-Themen 11
L Zugriff auf zwei Java-Quellcodes Java Basics - Anfänger-Themen 3
A OOP Zugriff auf Objekte von außen Java Basics - Anfänger-Themen 8
M Kapselung Datenkapselung Sinn direkter Zugriff? Java Basics - Anfänger-Themen 1
G Methoden Zugriff auf Methode.. aus einer anderen Klasse Java Basics - Anfänger-Themen 6
J JDialog Zugriff auf parent JDialog Java Basics - Anfänger-Themen 5
K Collections Zugriff auf ein bestimmtes Element in der Collection Java Basics - Anfänger-Themen 1
K ArrayList in Konstruktor - wie späterer Zugriff Java Basics - Anfänger-Themen 2
F Zugriff auf Objekt einer anderen Klasse Java Basics - Anfänger-Themen 7
P Zugriff auf Felder in ArrayList Objekten Java Basics - Anfänger-Themen 2
J Erste Schritte Zugriff auf Eigenschaft Java Basics - Anfänger-Themen 2
M MVC - Problem mit Zugriff auf Objekt Java Basics - Anfänger-Themen 4
D Zugriff auf von einer anderen Klasse erstellten Objekten Java Basics - Anfänger-Themen 5
C 5 - Zugriff verweigert Java Basics - Anfänger-Themen 1
K Zugriff auf Variabeln Wert einer Instanz Java Basics - Anfänger-Themen 4
A Methoden Zugriff auf eingelesene Variablen in der main Methode (ohne Änderung der Parameterliste) Java Basics - Anfänger-Themen 4
Z Methoden Zugriff mit Klasse 3 auf Methode von Klasse 2 welche in Klasse 1 erzeugt wird Java Basics - Anfänger-Themen 6
Z Zugriff auf andere Methoden Java Basics - Anfänger-Themen 12
Z Zugriff auf Pakete Java Basics - Anfänger-Themen 5
G Zugriff zwischen Klassen Java Basics - Anfänger-Themen 15
N Problem mit Swing Textfeld und Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 6
H Kein Zugriff auf das Element einer JList möglich: Fehlermeldung Java Basics - Anfänger-Themen 2
W OOP Zugriff auf mit Objekt erstellte Struktur Java Basics - Anfänger-Themen 7
F Klassen Zugriff auf Fenster aus versch. Klassen Java Basics - Anfänger-Themen 5
M Variablen Zugriff von außerhalb eines Blockes auf eine Variable innerhalb eines Blockes Java Basics - Anfänger-Themen 2
U Methoden Zugriff auf Array von weiterer Methode einer Klasse, Rückgabewert Problem Java Basics - Anfänger-Themen 5
B Klassen Zugriff auf Daten der Child-Klasse Java Basics - Anfänger-Themen 9
W Typisierte ArrayList und der Zugriff auf den Typ Java Basics - Anfänger-Themen 5
M Zugriff auf Klasse Java Basics - Anfänger-Themen 2
K Zugriff auf C: Java Basics - Anfänger-Themen 5
S Das richtige Format für den SOAP Zugriff Java Basics - Anfänger-Themen 0
S Klassen Zugriff auf Attribute einer zweiten Klasse, welche durch dritte gesettet wurden? Java Basics - Anfänger-Themen 2
N Zugriff bei Package Struktur Java Basics - Anfänger-Themen 6
M Enum: Zugriff auf Konstanten Java Basics - Anfänger-Themen 7
V Zugriff auf jProgressbar Java Basics - Anfänger-Themen 10
B Zugriff auf csv-Datei per hashmap Java Basics - Anfänger-Themen 5
G Spalte in JTable unsichtbar machen, Zugriff auf Daten ermöglichen Java Basics - Anfänger-Themen 2
T ZUgriff auf 'Werte' Java Basics - Anfänger-Themen 3
J Vererbung Zugriff auf private Variable Java Basics - Anfänger-Themen 10
C Klassen Zugriff auf Objekt anderer Klasse Java Basics - Anfänger-Themen 8
B Methoden Zugriff auf Variable ermöglichen Java Basics - Anfänger-Themen 3
M Zugriff auf Arraylist Java Basics - Anfänger-Themen 7
D Kein Zugriff auf JFrame Java Basics - Anfänger-Themen 2
K Zugriff einer Klasse auf eine andere Andere -> bad operand for binary operator Java Basics - Anfänger-Themen 5
B Erste Schritte Array-Zugriff Java Basics - Anfänger-Themen 10
D OOP Zugriff auf Objekte A in Klasse A aus Objekt B in Klasse B Java Basics - Anfänger-Themen 3
T Collections Zugriff auf Elemente aus Iterator() Schleife Java Basics - Anfänger-Themen 4
J Threads Zugriff auf Attribute Java Basics - Anfänger-Themen 16
N Kein Zugriff auf Ordner -> NullPointerException Java Basics - Anfänger-Themen 2
I kein zugriff auf jList oder Textfield Java Basics - Anfänger-Themen 2
N Problem bei Zugriff auf Textfelder Java Basics - Anfänger-Themen 6
LittleJavaCup Zugriff auf Klasse von package Java Basics - Anfänger-Themen 3
J Html zugriff - POST Request/Response Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben