TreeSet Benutzerdefinierte Komparator-Algo .. String-Vergleich

Aus der input-string zur Verfügung gestellt:

{ "200,400,7,1", "100,0,1,1", "200,200,3,1", "0,400,11,1",
"407,308,5,1","100,600,9,1" } ,

Ich bin hinzufügen derselben in ein TreeSet und wollen sortiert werden, mit dem 3. element um, so dass die erwartete Ausgabe:

(100,0,1,1) (200,200,3,1) (407,308,5,1) (200,400,7,1) (100,600,9,1) (0,400,11,1)

Aber meine eigentliche Ausgabe ist:

(100,0,1,1)(0,400,11,1)(200,200,3,1)(407,308,5,1)(200,400,7,1)(100,600,9,1)

Aber seit der string-Vergleich von 11 ist kleiner als 9, aber in Bezug integer , 11>9 . Meine erwartete Ausgabe ist immer unterschiedlich. Schlage vor, mir eine gewisse Vorstellung zu lösen, die gleichen.

import java.util.Comparator;
import java.util.TreeSet;

public class TreeSetComparator {

    public static void main(String[] args) {
        Comparator<String> comparator = new Comparator<String>() {
            @Override
            public int compare(String a, String b) {
                String aStr = a;
                String bStr = b;
                String[] splitA = aStr.split(",");
                String[] splitB = bStr.split(",");

                return splitA[2].compareTo(splitB[2]);
            }
        };

        String[] arr = { "200,400,7,1", "100,0,1,1", "200,200,3,1",
                "0,400,11,1", "407,308,5,1", "100,600,9,1" };

        TreeSet<String> ts = new TreeSet<String>(comparator);
        for (String str : arr) {
            ts.add(str);
        }

        for (String element : ts)
            System.out.print(element + " ");

    }
}

InformationsquelleAutor Abhishek Choudhary | 2011-11-11

Schreibe einen Kommentar