o.compareTo(o)

Status
Nicht offen für weitere Antworten.
M

Morlon

Gast
Grüße,
ich hab ein kleines Problem und weiß einfach nicht weiter.
Ich versuch mich gerade an meinem ersten Baum und muss dazu neue Objecte mit denen im Baum vergleichen können.
In meinen Baum füge ich nur Objecte des Typs MyElement ein. Eine Klasse, die compareable ist.
Damit mein Baum jetzt aber nicht auf MyElement's beschränkt ist übergebe ich dem Baum Objects.

Zum Einfügen eines neuen Objektes in meinen Baum durchsuch ich nun den Baum und vergleiche mittels compareTo.
Das ganze sieht dann in etwa so aus:

Code:
	public Node search(Object o, Node n)
	{
		Object old = array[(int)n.o];       //Das Object, dass sich bereits im Baum befindet
		int compare = o.compareTo(old);
		[...]
	}
Jetzt habe ich aber das Problem, dass mein Baum nicht weiß, dass o ein MyElement ist. Versucht also auf compareTo von java.lang.Object zu zugreifen, was natürlich nicht geht.
Was funktionieren würde, o in MyElement parsen, aber dann würde der tree nur noch mit MyElements funktionieren.

Kann mir jemand weiter helfen?
Wäre euch sehr dankbar,
Morlon
 

Murray

Top Contributor
Es spielt keine Rolle, ob eine Referenz auf eine MyElement-Instanz als MyElement oder als Object deklariert ist; wenn Du in MyElement compareTo( Object) überschreibst, dann wird zur Laufzeit auch die richtige Methode gezogen.
 
M

Morlon

Gast
Aber sowohl BlueJ als auch Eclipse bekomm ich folgende Meldung:
The method compareTo(Object) is undefined for the type Object
 
M

Morlon

Gast
Vielleicht hab ich auch in der MyElement ein Fehler.
Hier mal ein paar Schnippsel:
Code:
import java.lang.Comparable;
 
public class MyElement implements Comparable
{
	private String s1,
			         s2;
	private double d1;

    public MyElement(String s1, String s2, double d1) 
    {
        this.s1 = s1;
        this.s2 = s2;
        this.d1 = d1;
    }

    [...]

	public int compareTo(Object o)
	{
		MyElement o2 = (MyElement) o;
		return s1.compareTo( o.getS1());
	}
}

Zum Vergleichen soll halt der String s1 verwendet werden.
 

SamHotte

Top Contributor
Morlon hat gesagt.:
Aber sowohl BlueJ als auch Eclipse bekomm ich folgende Meldung:
The method compareTo(Object) is undefined for the type Object

Das liegt daran, dass diese Methode im Typ Object als protected deklariert ist. Damit sie benutzbar wird, muss man sie überschreiben und public deklarieren.
 

SamHotte

Top Contributor
Kann schon sein. Aber dein Codeschnipsel ist eh so klein, dass ich nicht alle möglichen Fehler hinzudenken kann. Fangen wir doch mal bei der überschriebenen compareTo an:
Deine Codezeile 'return s1.compareTo(o.getS1());' müsste eigentlich einen Compilerfehler werfen, da o der Parameter vom Typ Object ist.
 
M

Morlon

Gast
hubs, nein im code stehts richtig. hatte beim rüberkopieren wohl irgendwo die 2 verschluckt.

Aber mir fällt gerade etwas anderes auf. Mein Tree weiß ja noch garnicht, dass o ein MyElement ist, da er ja erst zur Laufzeit ein Object erhält. Also kann er auch noch nicht wissen, dass compareTo überschrieben 'sein wird'.

Daher meckert der Compiler, dass es o.compareTo() nicht gibt.

Aber weiter hlft mir der Geistesblitz jetzt auch nich ;)
 
G

Gast

Gast
Wenn ich in den Tree nen neues Objekt einfüg muss ich doch die einzelnen Objekte im Tree vergleichen um die richtige Stelle zu finden.
Ich will also wissen welchen meiner beiden MyElement größer/kleiner ist.
 
B

Beni

Gast
Für den Compiler ist "o" nur ein Object, und das besitzt keine "compareTo"-Methode.

Entweder übergibst du ein "Comparable o" (was ich persönlich besser fände) oder du machst einen Cast auf Comparable: "((Comparable)o).compareTo( ... )".
 

SamHotte

Top Contributor
Hmm. Ich weiß ja nicht, was das für ein Baum werden soll -- wenn ich nach größer/kleiner entscheide, habe ich eigentlich eine sortierte Liste und keinen Baum ... verstehe ich nicht ganz :bahnhof:
 
M

Morlon

Gast
Danke Beni, werd ich nachher mal testen.
@SamHotte, einen Sinn soll der Baum nich haben. ist nen bbaum, der mit einem array gekoppelt ist. Ich bin noch java-anfänger und will einfach mal testen was wie geht.
 
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
J compareTo Java Basics - Anfänger-Themen 4
G compareTo Java Basics - Anfänger-Themen 12
T Wie geht das mit compareTo Java Basics - Anfänger-Themen 2
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