Objekte vergleichbar machen mithilfe des "comparable" Interfaces ?



  • Hallo,
    ich bin neu in diesem Forum und programmiere nun seit ein paar Monaten Java.

    Zurzeit befasse ich mich mit Interfaces, und gleich dazu hätte ich eine Frage.
    Ich habe versucht einfach ein eigenes kleines Interface zu erstellen, und dabei eine Funktion "vorzugeben" die Objekte überhaupt vergleichbar machen, also z.b. zum Sortieren.

    Hier einfach mal das Interface + die Klasse, wobei ein Array von Instanzen dieser Klasse angelegt wird.

    interface  MyComparable
    {
    	int compareTo(Object o);
    }
    class Pupil implements MyComparable
    {
    	public String name;
    	public String className;
    
    	public Pupil(String name, String className)
    	{
    		this.name = name;
    		this.className = className;
    	}
    	public int compareTo(Object o)
    	{
    		Pupil other = (Pupil)o;	
    		return this.name.compareTo(other.name);
    
    	}
    }
    

    Dies sollte doch so funktionieren oder? die Ausgabe jedoch lautet bei

    Pupil[] pupils =
    		{
    			new Pupil("Springer","4AHELI"),
    			new Pupil("Strauss","4BHELI")
    		};
    
    		SortWorker.sort(pupils);
    
    		for(Pupil pupil : pupils)
    		{
    			System.out.println(pupil);
    		}
    .
    .
    .
    class SortWorker
    {
    	public static void sort(MyComparable[] objects)
    	{
    		boolean swapped = true;
    		MyComparable temp;
    
    		while(swapped)
    		{
    			swapped = false;
    
    			for(int i = 0; i < (objects.length - 1) ;i++)
    			{
    				if(objects[i].compareTo(objects[i+1]) > 0)
    				{
    					temp = objects[i];
    					objects[i] = objects[i+1];
    					objects[i+1] = temp;
    
    					swapped = true;
    				}
    			}
    		}
    	}
    }
    

    "Pupil@1cac622.." und
    "Pupil@769...usw."

    Könnte mir jemand sagen warum dies der Fall ist ? Ich danke schon mal jetzt für eure Rückmeldung 🙂



  • Doppelpost: http://www.c-plusplus.net/forum/295945

    MfG SideWinder


Anmelden zum Antworten