Sortieren von int Werten von Objekten in einer LinkedList, kann nicht auf int Werte zugreifen

Derenei

Aktives Mitglied
Ich habe hier einen Sortier Algorithmus programmiert, der einen LinkedList mitbekommt in der sich Objekte befinden. In den Objekten befindet sich ein Integer Wert auf den ich zugreifen muss damit mein Sortierungsverfahren funktioniert, aber ich kann auf Sie nicht zugreifen.

Hier mein Sortier-Algorithmus:
Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package prozessverwaltung;

import java.util.Comparator;
import java.util.LinkedList;

/**
 *
 * @author Alexander
 */
public class Sort {
    LinkedList list;
    
    public Sort (LinkedList list){
        this.list = list;
    }
    
    Comparator c = new Comparator () {

        @Override
        public int compare(Object o1, Object o2) {
            int x = 0;
            if (o1.hashCode() < o2.hashCode()){
                x = -1;
            }
            if (o1.hashCode() == o2.hashCode()){
                x = 0;
            }
            if (o1.hashCode() > o2.hashCode()){
                x = 1;
            }
            return x;
        }
    };
    
    public LinkedList mySort(LinkedList list, Comparator c){
        int comp = 0;
        int x;
        int y;
        
        for(int i = 0; i < list.size()-1; i++){
            x = (int)list.get(i)(.int-Wert);//So würde ich mir das vorstellen, aber es kommt ständig einen Fehlermeldung.
            y = (int)list.get(i+1)(.int-Wert);//Hier das selbe
            comp = c.compare(x, y);
            if (comp == 1){
                list.set(i, y);
                list.set(i+1, x);
                mySort (list, c);
            }
            
        }
        return list;
    }
}

Falls nötig hier noch meine Main-Klasse:
Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package prozessverwaltung;

import java.util.Comparator;
import java.util.LinkedList;

/**
 *
 * @author Alexander
 */
public class Prozessverwaltung {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Prozess a = new Prozess ("Steam");
        a.setiD(1);
        a.setPrioritaet(5);
        
        Prozess b = new Prozess ("RamVerwaltung");
        b.setiD(2);
        b.setPrioritaet(1);
        
        Prozess c = new Prozess ("UpdateExe");
        c.setiD(3);
        c.setPrioritaet(3);
        
        LinkedList list = new LinkedList ();
        list.add(a);
        list.add(b);
        list.add(c);
        
        Verwaltung w = new Verwaltung (list);
        Prozess d = new Prozess ("Pdf");
        d.setiD(4);
        d.setPrioritaet(10);
        
        w.ProzessHinzufügen(d);
        
        Sort s = new Sort (list);
        Comparator y = s.c;
        s.mySort(list, y);
        
        
        for (int i = 0; i < list.size(); i++){
            System.out.println(list.get(i));
        }
    }
}

Ich hoffe ihr könnt mjir helfen,....

MFG, Alexander
 
Wenn Du den Comparator mit Generics definierts kennt die compare() mthode schon den Typ der Objekte:
Java:
omparator c = new Comparator<MyType> () {
 
        @Override
        public int compare(MyType o1, MyType o2) {
bye
TT
 
Danke für deine Antwort, ich habe jetzt versucht deinen Antwort im Programm einzubauen, habe das so gemacht:

Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package prozessverwaltung;

import java.util.Comparator;
import java.util.LinkedList;

/**
 *
 * @author Alexander
 */
public class Sort {
    LinkedList list;
    
    public Sort (LinkedList list){
        this.list = list;
    }
    
    Comparator c = new Comparator <Prozess>() {

        @Override
        public int compare(Prozess o1, Prozess o2) {
            int x = 0;
            if (o1.prioritaet < o2.prioritaet){
                x = -1;
            }
            if (o1.prioritaet == o2.prioritaet){
                x = 0;
            }
            if (o1.prioritaet > o2.prioritaet){
                x = 1;
            }
            return x;
        }
    };
    
    public LinkedList mySort(LinkedList list, Comparator c){
        int comp = 0;
        Prozess x;
        Prozess y;
        
        for(int i = 0; i < list.size()-1; i++){
            x = (Prozess) list.get(i);
            y = (Prozess) list.get(i+1);
            comp = c.compare(x, y);
            if (comp == 1){
                list.set(i, y);
                list.set(i+1, x);
                mySort (list, c);
            }
            
        }
        return list;
    }
}

Jetzt kommt zwar keine Exception mehr, aber jetzt werden die Zeiger der Objekte ausgegeben, irgendwas stimmt noch nicht.

MFG,...

Alexander
 
Zuletzt bearbeitet:

Zurück
Oben