Comparator für Generiks

syscon

Mitglied
Hi,
bin grad dabei den mergesort zu implementieren. Dafür will ich einen Comperator schreiben der auf Generiks funktioniert heißt jeden ihm implementierten Datentyp sortiert!

Nun weiß ich nicht wie ich ihm sage wenn T der und der Typ ist nehme diese Methode

Mir ist nun nicht ganz klar wie ich das implementiere.

Java:
import java.util.*;


public class Compare implements Comparator <Tr> {

public int compare(Integer o1, Integer o2) {
		
		if(o1>o2){
			
		return 1;
			
		} if (o1<o2){
		return -1;
		}
		
		else return 0;
	}
	
}
 
G

Gast2

Gast
Mir ist nicht ganz klar was du meinst. Vor allem der Satz "wenn T der und der Typ ist nehme diese Methode" klingt ein wenig kryptisch.

Folgendes kompiliert schonmal...
Java:
public class Compare<T> implements Comparator<T> {
	public int compare(T o1, T o2) {
		// ...
	}
}
 

syscon

Mitglied
Ja genau ... aber wie will ich dann T vergleichen wenn ich jetzt noch nicht weiß was T ist.

Gibt es eine möglichkeit der Klasse zu sagen :

Wenn T = Integer dann Sortiere nach

o1>o2 oder o2>o1 oder beides ist gleich:

wenn T aber z.B. die Abstrakte Klasse Haus ist dann sortiere so und so

geht das hier mal mein Anfang ist aber bestimmt Falsch!:

Java:
import java.util.*;

// Dies ist nur ein Beispiel Comparator fom Typ Integer 

public class Compare<T> implements Comparator <T> {

	

	
	
	
	
	
	public int compare(Element<T> o1,Element<T> o2) {
		
	if ((""+(o1.inhalt).getClass()).equals("java.lang.Integer")){
		
	if(o1.inhalt>o2.inhalt){
		
	}
	
	
	
	
	}
		
		
		
	}
	
	
	
	
	
	
}
 
G

Gast2

Gast
Musst du die Ts denn unbedingt selbst vergleichen? Reichts nicht aus, dass du weißt dass die sortiert werden können? Da du ja ein mergesort programmieren willst sollte das doch eigentlich ausreichen. Dann kannst du deine Klasse z.b. so aufbauen:
Java:
public class Compare<T extends Comparable<T>> {
	public void doIt(T t) {
		// t.compareTo(otherT);
	}
}
 
S

Spacerat

Gast
Mir ist nicht ganz klar was du meinst. Vor allem der Satz "wenn T der und der Typ ist nehme diese Methode" klingt ein wenig kryptisch.

Folgendes kompiliert schonmal...
Java:
public class Compare<T> implements Comparator<T> {
	public int compare(T o1, T o2) {
		// ...
	}
}
Wow... ist das nicht das selbe (oder gleiche... oder wie auch immer) wie:
Java:
Comparator<MyClass> compare = new Comparator<MyClass>() {
    public int compare(MyClass o1, MyClass o2) {
        // ...
    }
};
? Naja... egal. Wichtig ist nur, dass der Comparator nur dazu da ist Objekte gleichen oder höheren Klassentyps miteinander zu vergleichen, die eigentlich nicht Comparable sind. Das Problem dabei ist, das die "compare()"-Methode nun Klassenabhängig ist. Da kannst du Comparator implementieren, wie du willst, die "compare()"-Methode wird immer anders aussehen. Standardmässige vergleiche beliebiger Objekte funktionieren nur mit "hashCode()" oder mit "toString()" oder hat da noch jemand andere Vorschläge?
Java:
public class ObjectComparator implements Comparator<Object> {
	public int compare(Object o1, Object o2) {
		return o1.toString().compareTo(o2.toString() /* vodafone.toFloat() :lol: */);
	}
}
 
Zuletzt bearbeitet von einem Moderator:

Marco13

Top Contributor
Das... ähm. geht so nicht. Man kann T's nicht vegleichen, darum geht es ja: T kann irgendwas sein. Da, wo der Comparator erstellt wird, muss man schon dazusagen, was es er vergleicht. Beschreib' ggf. mal genauer, wo du den Comparator brauchst. Er wird ggf. "von außen" dort hin durchgereicht werden müssen (d.h. von irgendwo, wo man weiß, was das T an dieser Stelle sein wird)
 

syscon

Mitglied
Hi,

also ich möchte auf einer Liste den Merge Sort einbauen :

Mergesort ? Wikipedia

Also im Grunde was Collection.sort macht !

Collections (Java Platform SE 6)

Jetzt hab ich meine Klasse DoppelListe geschrieben und möchte noch den Sort Algo implementieren:

Haben jetzt schon verstanden das man Java nun sagen muss das <Sortable> Comparable implementiert haben muss.

Meine Frage ? wo muss ich das implementieren laut "Java von Kopf bis Fuß" S.547 steht man soll es so implementieren:


Java:
public static <T extends Comperable<? super T>> void sort(List<T> list){


}

aber wenn ich das so implementiere sagt er mir :

Comparable Can not be resolved to a type,
bound mismatch

So schreibe ich das oben in den Klassenkopf dann gibt er mir zwar keine Fehlermeldung aber er sagt dann:

"antworte can not be resolved to a type"!!! was auch immer das heißt: in Zeile 68 bei return tmp;


Java:
public class DoppelListe <Sortable extends Comparable <? super Sortable>>{

//Hier stehen alle Methoden die vollständige Doppelt verlinkte Liste implementieren muss!




public DoppelListe<Sortable> mergesort(DoppelListe<Sortable> liste){
	    if (size() <= 1){ return liste;}
	    else{
	        DoppelListe<Sortable> linkeListe=new DoppelListe();
	        DoppelListe<Sortable> rechteListe=new DoppelListe();
	        int i=0;
	        while( i < size()/2){
	        
	       linkeListe.add(get(i));
	        i++;
	        }
	        while( i <= size()){
		        
	 	       rechteListe.add(get(i));
	 	        i++;
	 	        }
	        
	        linkeListe = mergesort(linkeListe);
	        rechteListe = mergesort(rechteListe);
	        return merge(linkeListe, rechteListe);
	    
	    }
	    }
	   
	    public DoppelListe<Sortable> merge(DoppelListe<Sortable> linkeListe,DoppelListe<Sortable> rechteListe){
	    	
	    	DoppelListe<Sortable> tmp=new DoppelListe();
	    	   while (linkeListe != null && rechteListe != null){
	    		   
	    		   if(linkeListe.get(0).compareTo(rechteListe.get(0))==-1 || linkeListe.get(0).compareTo(rechteListe.get(0))==0) 
	    		   
	    		   {
	    			   
	    			tmp.add(linkeListe.get(0));
	    		   }
	    		   
	    		   else{
	    			   
	    			   tmp.add(rechteListe.get(0)); 
	    			   
	    		   }
	    		   
	    		  
	    		   
	    	   }
	    	   
	    	   
	    	  while(linkeListe!=null){
	    		  
	    		 tmp.add(linkeListe.get(0));
	    		 linkeListe.remove(0);
	    		  }
	    	  
	    	  while(rechteListe!=null){
	    		  
		    		 tmp.add(rechteListe.get(0));
		    		 rechteListe.remove(0);
		    		  }
	    	  
	    	   return tmp;	    
	    	
	    	
	    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
richis-fragen Mehrere Spalten mit Comparator sortieren Java Basics - Anfänger-Themen 2
N Spezielle frage zum Comparator Java Basics - Anfänger-Themen 6
M Comparator Java Basics - Anfänger-Themen 25
M Comparator Java Basics - Anfänger-Themen 4
berserkerdq2 Wie lege ich ein Attribut comparator an? Java Basics - Anfänger-Themen 13
W Personen sortieren mit Comparator Java Basics - Anfänger-Themen 9
H Comparator Fehlermeldung Java Basics - Anfänger-Themen 5
V Collections ArrayList mit Comparator sortieren Java Basics - Anfänger-Themen 16
B Collections Objektreferenz-ID in der Ausgabe (Comparator Interface) Java Basics - Anfänger-Themen 2
R Methode zwei Sortierkriterien der Klasse Comparator übergeben Java Basics - Anfänger-Themen 4
O Lambda Ausdrücke in einem Comparator Java Basics - Anfänger-Themen 4
A Priority Queue / Comparator Java Basics - Anfänger-Themen 6
I Comparator<T> Interface als Methodenparamter Java Basics - Anfänger-Themen 4
L Binäre Suche mit Comparator Java Basics - Anfänger-Themen 5
N Comparable bzw Comparator Java Basics - Anfänger-Themen 5
J Comparator Java Basics - Anfänger-Themen 21
A Comparator Java Basics - Anfänger-Themen 4
G Interface java.util.Comparator: Wieso muss nur die Methode compare() implementiert werden Java Basics - Anfänger-Themen 2
V Comparator Java Basics - Anfänger-Themen 16
S Integer/Value-Paar in Prio-Queue ohne Comparator Java Basics - Anfänger-Themen 5
M Comparable und Comparator nicht ganz klar Java Basics - Anfänger-Themen 1
B Comparable & Comparator Java Basics - Anfänger-Themen 9
C Comparator und private Variablen Java Basics - Anfänger-Themen 7
Helgon Interface Comparator wird nicht instanziert Java Basics - Anfänger-Themen 3
C Comparator mit Double Werten? Java Basics - Anfänger-Themen 12
S Unterschied Comparable und Comparator Java Basics - Anfänger-Themen 2
E Comparator sortiert falsch... Java Basics - Anfänger-Themen 2
M Comparator Java Basics - Anfänger-Themen 7
B OOP Logikhilfe zum Comparator 2 Java Basics - Anfänger-Themen 12
B OOP Logikhilfe zum Comparator Java Basics - Anfänger-Themen 11
G Comparator Problem Java Basics - Anfänger-Themen 5
X eigener Mergesort auf generischen Typen mit Comparator Java Basics - Anfänger-Themen 6
H Comparable und Comparator Java Basics - Anfänger-Themen 22
Z Comparator Verständnisfrage Java Basics - Anfänger-Themen 5
B OOP Comparator - Sortierung "optisch" Darstellen Java Basics - Anfänger-Themen 17
A JTable sortieren mit einem Comparator Java Basics - Anfänger-Themen 2
S Comparator / Comparable ? Java Basics - Anfänger-Themen 3
G Objekte mit dem Attribut title mit Comparator sortieren Java Basics - Anfänger-Themen 5
P unchecked conversion to conform to Comparator Java Basics - Anfänger-Themen 3
G Comparator- methode compare exception werfen Java Basics - Anfänger-Themen 4
B interface Comparator Java Basics - Anfänger-Themen 4
M Hilfe bei der Erstellung der Comparator Klasse Java Basics - Anfänger-Themen 10
M ArrayList sortieren mittels Comparator Java Basics - Anfänger-Themen 10
G Sortieren ohne Comparator? Java Basics - Anfänger-Themen 4
G Comparator Java Basics - Anfänger-Themen 10
S Frage zu Comparator Java Basics - Anfänger-Themen 3
G ArrayList und Comparator Java Basics - Anfänger-Themen 6
M Comparator - Sortierkriterium Java Basics - Anfänger-Themen 11
L Comparator Java Basics - Anfänger-Themen 5
T Problem mit Comparator! Java Basics - Anfänger-Themen 7
C Anstatt Spalte, Zeile mit Comparator sortieren . Java Basics - Anfänger-Themen 5
B Liste sortieren mit Comparator Java Basics - Anfänger-Themen 2
D Frage zu Collection.sort bzw. Comparator u. Comparable Java Basics - Anfänger-Themen 2
S JTable mit Comparator sortieren, die Frage ist wo? Java Basics - Anfänger-Themen 4
B Wann Comparator und wann Comparable Java Basics - Anfänger-Themen 6
W Comparator Java Basics - Anfänger-Themen 3
W Methoden java map ersatz für c++map Java Basics - Anfänger-Themen 2
A csv Reader für Java? Java Basics - Anfänger-Themen 24
S Bitte Ratschläge für Console-MenuFührung... Java Basics - Anfänger-Themen 20
tomzen Java Unterstützung für exel dateien installieren. Java Basics - Anfänger-Themen 2
M Code aus IntelliJ in "Textform" für Word-Paper? Java Basics - Anfänger-Themen 10
G Icon für App Java Basics - Anfänger-Themen 1
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
V Durchschnittliche Volatility in Prozent für 4 Stunden berechnen Java Basics - Anfänger-Themen 14
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
C negamax-Algorithmus für Tic-Tac-Toe spielt manchmal falsch Java Basics - Anfänger-Themen 10
D Apache HTTPClient für alle Fälle Java Basics - Anfänger-Themen 41
J Layout Manager, welcher ist der Richtige für mein Program? Java Basics - Anfänger-Themen 1
J Fehlermeldung unverständlich für Jakarta Java Basics - Anfänger-Themen 17
M Minimax-Algorithmus für Vier gewinnt Java Basics - Anfänger-Themen 11
M GUI für Vier-Gewinnt. Java Basics - Anfänger-Themen 4
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
R Operatoren Rechenoperation in Java verwenden für Calculator Java Basics - Anfänger-Themen 2
R Operatoren Rechenoperation verwenden für Taschenrechner. Java Basics - Anfänger-Themen 32
Ostkreuz Counter für Booleanwerte Java Basics - Anfänger-Themen 8
B Regex Ausdrücke für Monate Java Basics - Anfänger-Themen 7
I BlueJ Queue Frage für Klausur Java Basics - Anfänger-Themen 2
K loop pausieren für eine bestimmte Anzahl? Java Basics - Anfänger-Themen 1
Jxhnny.lpz Randomisier für Buttons Java Basics - Anfänger-Themen 13
W Intuitive interface für Komponenten Java Basics - Anfänger-Themen 4
M "Class<T> clazz" im Constructor - auch für int möglich? Java Basics - Anfänger-Themen 7
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
I Code für Bezahlsystem (auch bei Offline Aktivität) Java Basics - Anfänger-Themen 7
U jUnit 5 Test für eine addMethode Java Basics - Anfänger-Themen 18
M monte carlo Algorithmus für 4 gewinnt Java Basics - Anfänger-Themen 12
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
izoards Sortier Algorithmus für Bounding Box Elememte Links nach Rechts und von Oben nach Unten Java Basics - Anfänger-Themen 33
M generate Methode für Streams Java Basics - Anfänger-Themen 6
I Datenmodell für "Tags" Java Basics - Anfänger-Themen 6
Lion.King for-Kontrollstruktur für Pyramide Java Basics - Anfänger-Themen 8
B Mit Countdown Midnestdauer für Teilaufgabenerledigung erzwingen Java Basics - Anfänger-Themen 8
J File length als Prüfwert für Download Java Basics - Anfänger-Themen 5
K Spieleidee gesucht für Informatikprojekt - JAVA (BlueJ)? Java Basics - Anfänger-Themen 15
P Zähler Variable für mehrere Objekte Java Basics - Anfänger-Themen 6
javamanoman Java für Online Banking Java Basics - Anfänger-Themen 12
NadimArazi Wie kann ich eine collision detection für die Paddles in meinem Pong Programm hinzufügen? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben