Objekte in Array vergleichen

PaperHat

Mitglied
Hey, ich habe wieder mal ein Problem und zawr geht es darum Objekte in einem Array zu vergleichen.
Ich hab ein Array, in dem sich folgende 5 Objekte befinden
Java:
Haustiere katze = new Haustiere ("Katze", 4, 25)
Haustiere hund = new Haustiere ("Hund", 24, 58)
Haustiere vogel = new Haustiere ("Vogel" , 0.3, 18)
Haustiere schlange = new Haustiere ("Schlange", 2, 150)
Haustiere hase = new Haustiere ("Hase", 2, 40)
Die Zahlen stehen für Gewicht, Größe.

Der Benutzer wird nun aufgefordert einzugeben, von welchem Tier er die Position in einer Rangordnung, die nach dem Gewicht geordnet ist, sehen möchte.
Es soll also eine Methode geben, die die Eingabe des Benutzers mit dem Array abgleicht und somit auf das gesuchte Objekt stößt und anschließend das Array nach dem Gewicht der Tiere sortiert und so die Reihenfolge festleht. Wiegen zwei Tiere gleich viel, soll nach der Realtion zur Größe geschaut werden, je kleiner, desto weiter oben im Rank.
Jetzt komm ich hier aber überhaupt nicht weiter, im Internet hab ich nichts gefunden, von dem ich denke, dass es mir hilft. Wie kann ich denn die Objekte innerhalb des Arrays vergleichen und somit ein sortiertes Array erlangen und dann auch noch die richtige Position ausgeben? Hat jemand eine Idee? 🙂
 
Naja über das Comparable-Interface kannst du festlegen, wie 2 Objekte vergleichen werden sollen - also wann ObjektA größer/kleiner/gleich ObjektB ist.
Deine Klasse Haustier müsste also das Compareable<Haustier> Interface implementieren und die compareTo(Haustier other) Methode überschreiben. Dann kannst du dein Array bspw einfach über Arrays.sort() sortieren lassen.
 
Erstelle ein Array oder Liste. Fülle deine Haustiere da rein. (Die Klasse sollte Haustier und nicht Haustiere heißen, denn jedes repräsentiert nur eins)
Jetzt kommt es drauf an, ob du Comparable/ einen Comparator benutzen darfst.
Falls ja schau dir für Arrays die Methode https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#sort(T[], java.util.Comparator) an.
Für Listen die Methode https://docs.oracle.com/javase/7/do...ml#sort(java.util.List, java.util.Comparator).
Zu Comparable:
Hiermit machst du eine Klasse vergleichbar. Du musst hierfür das Interface implementieren und damit eine Methode "compareTo" implementieren.
Zu Comparator:
Hier erstellst du eine weitere Klasse, die in der Lage ist Objekte von einer speziellen Klasse zu vergleichen, auch hier gibt es dann eine "compare"-Methode mit zwei Argumenten.
 
Naja über das Comparable-Interface kannst du festlegen, wie 2 Objekte vergleichen werden sollen - also wann ObjektA größer/kleiner/gleich ObjektB ist.
Deine Klasse Haustier müsste also das Compareable<Haustier> Interface implementieren und die compareTo(Haustier other) Methode überschreiben. Dann kannst du dein Array bspw einfach über Arrays.sort() sortieren lassen.

Kennst du zufällig eine Seite, die das einfach erklärt oder hast ein einigermaßen passendes Beispiel für mich, ich hab bis jetzt irgendwie noch nicht so wirklich was gefunden, dass ich verstehe
 
Kennst du zufällig eine Seite, die das einfach erklärt oder hast ein einigermaßen passendes Beispiel für mich, ich hab bis jetzt irgendwie noch nicht so wirklich was gefunden, dass ich verstehe
http://javatricks.de/tricks/objekte-vergleichen-mit-comparable-und-comparator
http://openbook.rheinwerk-verlag.de...09_001.htm#mj0ed1876a49727c1dc4a281f6818e3a95
https://www.java-blog-buch.de/d-objekte-sortieren-comparator-und-comparable/
https://javabeginners.de/Grundlagen/Objekte_sortieren.php
Das sind alles Ergebnisse von einer Google-Suche mit dem Suchbegriff "java comparable interface deutsch". Es sind tatsächlich auch Englische Quellen dabei, aber was soll's.
 
Das Problem bei diesen Seiten ist, dass sie nur 2 und nicht 3 Klassen benutzen und auch nicht erst ne Eingabe vom Benutzer im Array suchen und dann das zugehörige Objekt, in dem die Eingabe vorkommt, ausgeben
 
Das Problem bei diesen Seiten ist, dass sie nur 2 und nicht 3 Klassen benutzen und auch nicht erst ne Eingabe vom Benutzer im Array suchen und dann das zugehörige Objekt, in dem die Eingabe vorkommt, ausgeben
Wie wär's wenn du für diese Dinge selbst eine Google-Suche startest?

Du hast doch hier ein mehrteiliges Problem:
Sortierung.
Benutzereingabe.
Index finden.

Jetzt informierst Du Dich zu jedem dieser 3 Bereiche. Und zwar so, dass Du jeden dieser Bereiche verstehst. Danach baust du sie zusammen.
 
Das Problem bei diesen Seiten ist, dass sie nur 2 und nicht 3 Klassen benutzen und auch nicht erst ne Eingabe vom Benutzer im Array suchen und dann das zugehörige Objekt, in dem die Eingabe vorkommt, ausgeben
Kleiner Tipp meinerseits: Du wirst in 95% der Fälle kein Beispiel finden, was 100%ig zu deinen Problemen passt. Zur Programmierung gehört, neben dem erlernen der Sprache selbst, auch das richtige Denken zu erlernen - also Probleme in Teilprobleme zu zerlegen, dazu Teillösungen zu finden und diese am Ende zu kombinieren und eine Gesamtlösung zu erhalten.
Das sollte einem, auch als Anfänger, so schnell wie möglich bewusst werden und das lernen.
 

Zurück
Oben