Wie richtig initialisiert werden einem Komparator?

Schreiben brauche ich eine statische Methode in einer Klasse MinTester berechnet, dass das "kleinste" string
aus einer ArrayList-Auflistung mit einem comparator-Objekt:

public static String min(ArrayList<String> list, Comparator<String> comp)

Kann ich nicht verwenden, der Collections-Klasse zu berechnen, die minimale.

Hier ist was ich habe, so weit.

public class MinTester 
{
    public static String min(ArrayList<String> list, Comparator<String> comp)
    {
        String shortest = list.get(0);

        for(String str : list) {
            if ( comp.compare(str, shortest) < 0) {
                shortest = str;
            }
        }
        return shortest;
    }
}

Ich bin nicht immer alle Fehler, die hier von der Methode, So dass ich versuchen, es zu testen in Main mit.
Ich bekomme diese Fehlermeldung, wenn Sie versuchen, um pass comp: Variable comp kann nicht initialisiert wurden

public static void main(String[] args)
{
    //TODO code application logic here

    MinTester s = new MinTester();
    Comparator<String> comp;
    ArrayList<String> list = new ArrayList<>();

    list.add("a");
    list.add("ab");
    list.add("abc");
    list.add("abcd");

    String a = s.min(list,comp);//Error: Variable comp may not have been initialized

    System.out.println(a);
}

Heres, wo ich mein problem.

Ich versuche

Comparator<String> comp = new Comparator<>();//Error:Comparator is abstract, cannot be instantiated
Comparator<String> comp = new MinTester();//Error: MinTester cannot be converted to Comparator<String>

Kann mir jemand sagen, der richtige Weg, um dies zu umgehen Komparator? Im nicht sicher, wenn ich nur versucht Sie zu initialisieren falsch, oder wenn ich ' m fehlt etwas in meinem MinTester Klasse.

Sie können Lesen Sie meine Artikel über diese (sollten demnächst aktualisiert) codeproject.com/Articles/703185/...
Sie haben nicht definiert, was Sie meinen "kleinsten". Sie implizieren in Ihrem code, dass du meinst, "kürzeste", aber ich vermute, die definition ist etwas komplexer, wie in "der kürzeste, aber im Fall von einem Band, das Sortieren nach Charakter-Sortierung der Reihenfolge (d.h. alphabetisch nach Buchstaben)". Sobald Sie wissen, dass, implementieren Comparator<String>.

InformationsquelleAutor Reeggiie | 2014-03-02

Schreibe einen Kommentar