Objekttypen vergleichen und filtern

JJackson

Mitglied
Hallo,
ich soll im Rahmen einer Hausaufgabe ein Verwaltungssytem von verschiedenen Medien erstellen (Dvd, Bücher, Zeitschriften). Alle diese Klasse erben von der Oberklasse "Medium".
Es soll eine Methode zum "filtern" der Objekte implementiert werden, also dass nur die Objekte vom Typ Dvd, Bücher oder Zeitschriften angezeigt werden.
Ich habe überhaupt keine Idee wie ich das implementieren soll. Meine Idee bisher: Eine Schleife, die alle erzeugten Objekte durchläuft. Dazu müsste ich (glaube ich) die Objekte in eine Liste packen.
Aber wie vergleiche ich die Typen bzw. wie stelle ich fest welchen Typ ein Objekt hat? Und wie gebe ich diese Objekte aus?

Hat einer eine Idee?
 

Steven Hachel

Bekanntes Mitglied
Definiere doch einfach eine Enum.
Java:
enum MediumType {
    DVD,
    BUECHER,
    ZEITSCHRIFTEN;
}

In deinen Objekten definierts du einfach ein Attribut mit diesem Types und schon weisst du was es ist.
Java:
public class DVD extends MediumAbstract {

    public DVD() {
        super(MediumType.DVD);
    }
}

Java:
public abstract MediumAbstract implements Medium {

    private MediumType type;

    public MediumAbstract(MediuemType type) {
        this.type = type;
    }

    @Override
    public MediumType getType() {
        return type;
    }
}

Java:
public interface Medium {
    MediumType getType();
}

Kann deine Frage auch völlig falsch verstanden haben, dass bitte ich dann zu entschuldigen :)
 
Zuletzt bearbeitet:

JJackson

Mitglied
Naja nicht ganz: Ich muss ja verschiedene Objekte erzeugen, z.B. 3 Bücher, 5 Dvd's usw mittels Buch b1 = new Buch()
Nun soll ich ein Methode implementieren mit der ich die erzeugten Objekte "filter".
1. Wie übergebe ich dieser Methode alle erzeugten Objekte?
2. Wie vergleiche ich diese? (Die Idee mit einem Attribut hatte ich auch)

Idee: Der Methode ein "Typ" (als Attribut oder what ever) als Parameter übergeben. Ähnlich wie "public filter (MediumTyp mt/Buch)" und in der Method vergleicht er alle Objekte mit diesem Typ (for und if schleife) und tut alle Objekte, die diesem Typ entsprechen in eine Liste und gibt diese Liste zurück.
Geht sowas? Oder ist das zu kompliziert/unnötig?
 

Steven Hachel

Bekanntes Mitglied
Wieso musst du den erzeugten Objekten eine Methode zum Filtern übergeben? Die kennen sich untereinander doch gar nicht und sollten es wohl auch nicht, oder?
Kannst du die Erzeugten Objekt vom Type Medium nicht einfach allesamt in eine Liste packen und sie dann filtern?

Java:
List<Medium> mediumList = new ArrayList();

mediumList.add(new Buch("abc"));
mediumList.add(new Buch("def"));

mediumList.add(new Dvd("a"));
mediumList.add(new Dvd("b"));

List<Medium> dvdList = mediumList.stream().filter(medium -> medium.getType().eguals(MediumType.DVD)).collect(Collectors.toList());

List<Medium> buchList = mediumList.stream().filter(medium -> medium.getType().eguals(MediumType.BUCH)).collect(Collectors.toList());
 

Joose

Top Contributor
1. Wie übergebe ich dieser Methode alle erzeugten Objekte?
Erzeuge alle Objekte und füge sie einer Liste hinzu. Diese Liste + den Typ nach dem gefiltert werden soll übergibst du an deine Methode "filter".

2. Wie vergleiche ich diese? (Die Idee mit einem Attribut hatte ich auch)
Variante 1: Wie @Steven Hachel schon gezeigt hat mittels eines Enums und Attributs

Variante 2: Spar dir das Enum und Attribut und verwende "instanceOf"

(for und if schleife)
Es gibt "while", "do/while" und "for" (bzw. foreach) Schleifen aber keine if-Schleifen!

und tut alle Objekte, die diesem Typ entsprechen in eine Liste und gibt diese Liste zurück.
Geht sowas? Oder ist das zu kompliziert/unnötig?
Ja so wäre das normale vorgehen, am Anfang solltest du schauen dass du dein Ziel erreicht, danach kannst du Code immer noch refactoren ;)
 

JJackson

Mitglied
Irgendwie komme ich nicht weiter. Folgende Situation:
Ich habe eine abstrake Klasse "Medium" und die Subklassen "Buch, DVD und Zeitschrift". In der Klasse Medium habe ich die ArrayList deklariert mit "ArrayList<Medium> medien = new ArrayList<Medium>() ".
In den jeweiligen Konstruktoren der Subklasen habe ich zusätzlich " medien.add(this) " stehen (das Programm zeigt auch kein Fehler an).
D.h. doch, wenn ich zum Beispiel ein neues Buch-Objekt erzeuge, dass das Objekt der ArrayList hinzugefügt wird.
Wenn ich nun in der Testklasse (,wo ich auch die Objekte erzeuge) die "medien" ausgeben möchte, um zu schauen, ob das Objekt auch wirklich hinzugefügt wurde, spuckt er ein Fehler aus "medien cannot resolved to a variable".
Leider komme ich grad da nicht weiter. Wie und wo muss ich die ArrayList erzeugen und wie kann ich sie ausgeben, um zu überprüfen, ob Objekte hinzugefügt werden?
Vielen Dank schon mal!
Gruß
 

Joose

Top Contributor
Irgendwie komme ich nicht weiter. Folgende Situation:
Ich habe eine abstrake Klasse "Medium" und die Subklassen "Buch, DVD und Zeitschrift". In der Klasse Medium habe ich die ArrayList deklariert mit "ArrayList<Medium> medien = new ArrayList<Medium>() ".
Wenn du ein Liste von Medien Objekten verwalten willst solltest du dies in einer eigenen Klasse machen. So wie du es beschrieben hast, hat jedes Medien Objekt welches du erstellst (egal ob Buch, DVD oder Zeitschrift) eine eigene Liste. Das dürfte aber nicht dein Ziel sein ;)

In den jeweiligen Konstruktoren der Subklasen habe ich zusätzlich " medien.add(this) " stehen (das Programm zeigt auch kein Fehler an).
D.h. doch, wenn ich zum Beispiel ein neues Buch-Objekt erzeuge, dass das Objekt der ArrayList hinzugefügt wird.
Ja das heißt es, aber wie oben schon geschrieben hat jedes Medien Objekt seine eigene ArrayList. Du solltest eben stattdessen eine Klasse "Medienverwaltung" schreiben, welche eine ArrayList hat wo alle Medien Objekte hinzugefügt werden.

Wenn ich nun in der Testklasse (,wo ich auch die Objekte erzeuge) die "medien" ausgeben möchte, um zu schauen, ob das Objekt auch wirklich hinzugefügt wurde, spuckt er ein Fehler aus "medien cannot resolved to a variable".
Hier wäre etwas Code deiner Testklasse hilfreich ;)
Einfach gesagt nur weil du irgendwo eine ArrayList mit dem Variablennamen "medien" deklarierst ist diese nicht überall verfügbar.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Objekt aus array holen anhand des Objekttypen Java Basics - Anfänger-Themen 8
J OOP verschiedene Objekttypen ablegen Java Basics - Anfänger-Themen 4
M Vergleichen, ob eine Liste länger als andere ist Java Basics - Anfänger-Themen 6
E Arrays in einer ArrayList miteinander vergleichen Java Basics - Anfänger-Themen 12
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
I 2 verschiedene Klassen mit gleichen Property vergleichen Java Basics - Anfänger-Themen 13
J 2 listen vergleichen, die auch null Elemente haben können ! Java Basics - Anfänger-Themen 9
J ArrayList vergleichen im spiel Mastermind Java Basics - Anfänger-Themen 2
J Array.list vergleichen Java Basics - Anfänger-Themen 1
M 3 Zahlen miteinander vergleichen Java Basics - Anfänger-Themen 18
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
B bei 2 Arrays Anzahl gleicher Elemente vergleichen? Java Basics - Anfänger-Themen 49
W LocalDate vergleichen mit Equals? Java Basics - Anfänger-Themen 7
S mehrere TreeSets so speichern, dass man sie miteinander vergleichen kann Java Basics - Anfänger-Themen 1
ArrayList mit unbekannter Menge an Arrays die Arrays vergleichen Java Basics - Anfänger-Themen 9
M String mit Variable vergleichen Java Basics - Anfänger-Themen 9
O Array mit einem Zeichen vergleichen Java Basics - Anfänger-Themen 1
S String mit Int input vergleichen Java Basics - Anfänger-Themen 5
S Den Minimumberechnen 2 codes vergleichen Java Basics - Anfänger-Themen 4
S Chars vergleichen ohne Betrachtung der Groß und Kleinschreibung Java Basics - Anfänger-Themen 7
S Aktuell beste Methode um zwei Bilder zu vergleichen..? Java Basics - Anfänger-Themen 1
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
districon Vergleichen von Objekten Java Basics - Anfänger-Themen 20
Bademeister007 Elemente aus zwei verschiedenen Arrays miteinander vergleichen und gegeben falls entfernen Java Basics - Anfänger-Themen 14
M Strings vergleichen Java Basics - Anfänger-Themen 10
J Zufallszahlen generieren und Werte vergleichen Java Basics - Anfänger-Themen 3
Stephan_kl Reihenwert-Berechnung, Ergebnis mit vorherigem Ergebnis vergleichen Java Basics - Anfänger-Themen 11
J Zwei Objekte vergleichen Java Basics - Anfänger-Themen 8
R Werte und Reihenfolge in 2d Arrays vergleichen Java Basics - Anfänger-Themen 5
JaVaN0oB Wörterraten - Falsche Ausgabe, String/Chars vergleichen Java Basics - Anfänger-Themen 2
O String mit Character vergleichen Java Basics - Anfänger-Themen 3
S 2 Strings mit Equals vergleichen Java Basics - Anfänger-Themen 11
N 2D Arrays jedes xy vergleichen Java Basics - Anfänger-Themen 7
M Objekte mittels equals vergleichen Java Basics - Anfänger-Themen 14
J zwei String Arrays miteinander vergleichen Java Basics - Anfänger-Themen 18
F Eine Zahl mit Arrays vergleichen Java Basics - Anfänger-Themen 7
D Vergleichen von Strings Java Basics - Anfänger-Themen 6
M Objekte miteinander vergleichen Java Basics - Anfänger-Themen 18
M Matrix Elemente vergleichen Java Basics - Anfänger-Themen 11
I Alle Elemente von zwei Listen vergleichen Java Basics - Anfänger-Themen 1
R String vergleichen Java Basics - Anfänger-Themen 59
S Vergleichen ob der Integer der benutzt eingeben werden soll überhaupt ein int ist Java Basics - Anfänger-Themen 1
C System.in.read() Boolsche Werte vergleichen Java Basics - Anfänger-Themen 8
K Boolean in einer Methode um 2 Objekte zu vergleichen Java Basics - Anfänger-Themen 12
N Zwei Daten (Datum) miteinander vergleichen, abspeichern, laden Java Basics - Anfänger-Themen 4
A Daten auslesen/vergleichen Java Basics - Anfänger-Themen 3
J Strings untereinander in einer Liste vergleichen Java Basics - Anfänger-Themen 18
E Zahlen von einem Array mit zahlen von zweitem Array vergleichen Java Basics - Anfänger-Themen 27
A Suffix vergleichen Java Basics - Anfänger-Themen 2
L Erste Schritte Elemente zwei Schlangen vergleichen Java Basics - Anfänger-Themen 14
PaperHat Objekte in Array vergleichen Java Basics - Anfänger-Themen 9
F Input/Output 2 Textdateien mit einander vergleichen Java Basics - Anfänger-Themen 11
N Zwei Strings mit "==" vergleichen warum TRUE Java Basics - Anfänger-Themen 2
M String vergleichen Java Basics - Anfänger-Themen 5
T Datentypen Kann Java 2 verschiedene Datentypen vergleichen? Java Basics - Anfänger-Themen 2
S Array, Geburtsdatum, Vergleichen Java Basics - Anfänger-Themen 28
F JList Elemente mit Strings vergleichen Java Basics - Anfänger-Themen 12
L Variablen Versionsnummern vergleichen Java Basics - Anfänger-Themen 5
N Methoden int[]'s vergleichen Java Basics - Anfänger-Themen 4
N Methoden HashMap interne Werte miteinander vergleichen Java Basics - Anfänger-Themen 7
T JPasswordFielder vergleichen Java Basics - Anfänger-Themen 16
K Datentypen Einträge zweier Matrizen vergleichen Java Basics - Anfänger-Themen 4
M Objekt mit Hashmap vergleichen Java Basics - Anfänger-Themen 22
S Werte in Liste mit Nachfolger vergleichen Java Basics - Anfänger-Themen 5
M Erste Schritte Mehrere eingaben in einer Line vergleichen (if equals...) Java Basics - Anfänger-Themen 6
J Zahlensequenz mit einer anderen Sequenz vergleichen Java Basics - Anfänger-Themen 6
P String größer kleiner gleich vergleichen Java Basics - Anfänger-Themen 6
H Bubblesort-Zwei Integer auf Dekade vergleichen. Java Basics - Anfänger-Themen 6
J Methoden BinaryStrings vergleichen Java Basics - Anfänger-Themen 12
C arrey mit string vergleichen Java Basics - Anfänger-Themen 2
K Methoden Passwort Bestätigungsfeld mit Password vergleichen Java Basics - Anfänger-Themen 7
M Wortteile im String vergleichen Java Basics - Anfänger-Themen 2
L Rekursiv zwei Strings vergleichen Java Basics - Anfänger-Themen 3
J Algorithmus - Strings auf eigene Reihenfolge miteinander vergleichen Java Basics - Anfänger-Themen 4
C Große Zahlen vergleichen Java Basics - Anfänger-Themen 19
? Methoden Boolean Wert vergleichen und einlesen Java Basics - Anfänger-Themen 1
Korvinus Vergleichen von 2 csv-Dateien Java Basics - Anfänger-Themen 2
K Comparable - Objekte aus Array vergleichen und größtes auswählen Java Basics - Anfänger-Themen 1
G Passwort und Passwort wiederholen in if-Abfrage vergleichen Java Basics - Anfänger-Themen 15
JavaNewbie2.0 String vergleichen Java Basics - Anfänger-Themen 4
M 2 Stellen in einem Array vergleichen und bei übereinstimmen eine davon ersetzen Java Basics - Anfänger-Themen 1
A Methoden Char-Arrays auf aufeinanderfolgende Elemente vergleichen! Java Basics - Anfänger-Themen 7
R Objekte Vergleichen und Sortieren Java Basics - Anfänger-Themen 3
A Werte innerhalb von resultset vergleichen Java Basics - Anfänger-Themen 2
J Zwei String-Variabeln vergleichen Java Basics - Anfänger-Themen 5
I Meta Tags vergleichen mit Html Vorgabe Java Basics - Anfänger-Themen 8
T Java gleichfarbige Pixel vergleichen Java Basics - Anfänger-Themen 5
B Arrayinhalt mit String vergleichen Java Basics - Anfänger-Themen 6
J 2 Arrays vergleichen (Unterschiedliche Längen) Java Basics - Anfänger-Themen 42
K Textdateien vergleichen optimieren Java Basics - Anfänger-Themen 9
R Zeichen in String vergleichen Java Basics - Anfänger-Themen 75
P Erste Schritte Mehrdimensoniales Array vergleichen Java Basics - Anfänger-Themen 2
S Methoden Vergleichen von zwei Listen in der Geschwindigkeit von O(n+m) Java Basics - Anfänger-Themen 32
B ArrayList vergleichen Java Basics - Anfänger-Themen 18
J Generics Datentypen vergleichen Java Basics - Anfänger-Themen 16
OlafHD String in einer If-Anweisung Vergleichen Java Basics - Anfänger-Themen 2
D Variablen Variable char vergleichen Java Basics - Anfänger-Themen 5
F String vergleichen Java Basics - Anfänger-Themen 9
S LinkedList mit Input vergleichen. Java Basics - Anfänger-Themen 5
Shizmo Arrays miteinander vergleichen Java Basics - Anfänger-Themen 22

Ähnliche Java Themen

Neue Themen


Oben