compareTo

Status
Nicht offen für weitere Antworten.

jack26

Mitglied
Hallo,

ich hab grad ein kleines Verständnisproblem.

Ich habe folgenden Code, der glaube ich ziemlich falsch ist:
Code:
public int compareTo(Equipment arg0) {
		if(this.abschreibungswert()<arg0.abschreibungswert())
			return -1;
		if(this.abschreibungswert()>arg0.abschreibungswert())
			return +1;
		if(this.abschreibungswert()==arg0.abschreibungswert())
			this.getInvNr().compareTo(arg0.invNr);
                                                ....		
	}

Hierbei ist Equipment einfach ein Objekt einer selbstgeschriebenen Klasse Equipment.
Ich möchte eigentlich bloß folgendes:

Ich möchte 2 Equipments miteinander vergleichen, also so zum beispiel testEquipment.compareTo(anderesEquipment)
Dabei soll die selbstgeschriebene abschreibungswert()-Methode von beiden aufgerufen werden.
Anschließend sollen die beiden Rückgabewerte (ist jeweils eine int-Zahl) der abschreibungswert()-Methode miteinander verglichen werden und
-1 zurückgegeben werden, falls der abschreibungswert von testEquipment kleiner als der abschreibungswert von anderesEquipment ist
+1 zurückgegeben werden, falls der abschreibungswert von testEquipment größer als der abschreibungswert von anderesEquipment ist

und falls beide Rückgabewerte von abschreibungswert() gleich sind,

wird mit Hilfe des getters getInvNr() von beiden Equipments die InventarNummer (ist ein int-Attribut) aufgerufen und miteinander verglichen, falls hierbei die inventarNummer von testEquipment kleiner als die inventarNummer von anderesEquipment ist wird -1, ansonten +1 zurückgegeben.

Wäre für jede Hilfe dankbar.
Vielen Dank.
Gruß
jack26
 

byte

Top Contributor
Wenn getInvNr einen int zurückliefert, dann ist die Zeile falsch. Denn primitive Typen (wie int) haben keine Methoden (somit auch keine compareTo()). Du musst das dann schon explizit prüfen und die Werte zurückgeben. Ausserdem in Zeile 6 das + entfernen.
 
M

maki

Gast
und falls beide Rückgabewerte von abschreibungswert() gleich sind,

wird mit Hilfe des getters getInvNr() von beiden Equipments die InventarNummer (ist ein int-Attribut) aufgerufen und miteinander verglichen, falls hierbei die inventarNummer von testEquipment kleiner als die inventarNummer von anderesEquipment ist wird -1, ansonten +1 zurückgegeben.
Dir ist klar das damit keine 2 Equipments gleich sein können (= compareTo gibt 0 zurück), oder?

Auch sollte die equals Methode genauso funktioniern, muss aber nicht zwingend.
 

jack26

Mitglied
Danke für die Antworten.
Ich habs schon gelöst mein Problem, stand wieder mal neben mir...

So sollts aussehen nachher:
Code:
public int compareTo(Equipment arg0) {
		if(abschreibungswert()<arg0.abschreibungswert())
			return -1;
		else if(abschreibungswert()==arg0.abschreibungswert()) 
			if(getInvNr()<arg0.getInvNr())
				return -1;
			
		return 1;
		
	}

Gruß
jack26
 
B

Beni

Gast
Für diese Methode muss gelten:
Code:
a.compareTo( a ) == 0
Falls das nicht gilt (wie bei dieser Implementation), werden einige Algorithmen (z.B. der Sortieralgorithmus von Java) ziemlichen Müll produzieren :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Cassy3 Generics - CompareTo Java Basics - Anfänger-Themen 21
J compareTo()- und equals-Methode Java Basics - Anfänger-Themen 3
X compareTo Methode wird ignoriert Java Basics - Anfänger-Themen 7
O compareTo nach mehreren Kriterien Java Basics - Anfänger-Themen 13
J Hashmap langsamer als compareTo? Java Basics - Anfänger-Themen 23
B Methoden compare() und compareTo() Java Basics - Anfänger-Themen 1
P compareTo() Java Basics - Anfänger-Themen 3
C compareTo verwenden Java Basics - Anfänger-Themen 2
T Datentypen compareTo() u. equals() bei Strings Java Basics - Anfänger-Themen 3
K hashCode, compareTo vs. equals Java Basics - Anfänger-Themen 3
J Sortier alternativen mit der compareTo Methode? Java Basics - Anfänger-Themen 6
J TreeSet mit compareTo sortieren Java Basics - Anfänger-Themen 2
K compareTo(String arg) überschreiben Java Basics - Anfänger-Themen 4
N Compiler-Fehler Comparable / compareTo implementierung Java Basics - Anfänger-Themen 2
M CompareTo soll Datum sortieren Java Basics - Anfänger-Themen 2
S compareTo() und equals() Java Basics - Anfänger-Themen 6
A Objekte aus 2 Klassen mit compareTo() vergleichen Java Basics - Anfänger-Themen 7
K CompareTo zwei mal benutzen klappt nicht. Java Basics - Anfänger-Themen 2
1 HILFE! Strings mit CompareTo vergleichen Java Basics - Anfänger-Themen 3
R compareTo & equals Java Basics - Anfänger-Themen 10
T Methoden Wie compareTo() Methode implementieren? Java Basics - Anfänger-Themen 9
T Strings mit compareto vergleichen und array sortieren Java Basics - Anfänger-Themen 14
P Generischer Binärbaum (compareTo Frage) Java Basics - Anfänger-Themen 4
J Probleme mit Comparable, compareTo() Java Basics - Anfänger-Themen 2
R compareTo Liste sortieren Java Basics - Anfänger-Themen 5
L compareTo bei Strings? Java Basics - Anfänger-Themen 4
D OOP mit compareTo Array sortieren (aus zwei Klassen) Java Basics - Anfänger-Themen 3
T compareTo warum geht es nicht? Java Basics - Anfänger-Themen 2
W compareTo für 3 Strings Java Basics - Anfänger-Themen 11
M compareTo-Sortierungsproblem Java Basics - Anfänger-Themen 16
F compareTo - Sortierung nach 2 Argumenten Java Basics - Anfänger-Themen 10
G in compareTo umschreiben Java Basics - Anfänger-Themen 4
A Die "compareTo( )" methode Java Basics - Anfänger-Themen 16
G compareTo Java Basics - Anfänger-Themen 12
T Wie geht das mit compareTo Java Basics - Anfänger-Themen 2
M o.compareTo(o) Java Basics - Anfänger-Themen 13
K compareTo in Verbinug mit Arrays.sort() Java Basics - Anfänger-Themen 4
Bierhumpen compareTo. Wie setze ich es ein Java Basics - Anfänger-Themen 11
R compareTo Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben