Warum Komparator.der Vergleich funktioniert nicht mit String::toLowerCase Methode Referenz?

Ich versuche ein array Sortieren von Zeichenfolgen, indem umgekehrter Reihenfolge (ignoring case), ohne es zu ändern, und nur drucken. Also ich bin mit Java8-stream. Aber ich kann nicht es tun, zu verwalten.

Hier ist mein Versuch :

package experimentations.chapter02;

import java.util.Arrays;
import java.util.Comparator;
import java.util.stream.Collectors;

public class StringStream {

    public static void main(String[] args) {
        sortStrings();
    }

    public static void sortStrings(){
        String[] stringsArray = "The quick brown fox has a dirty ladder".split("\\s+");
        System.out.println(
                Arrays.stream(stringsArray)
                .sorted(Comparator.comparing(String::toLowerCase).reversed())
                .collect(Collectors.toList())
        );
    }

}

Hier das problem, dass String::toLowerCase wird nicht akzeptiert in der statischen Methode Comparator.comparing.

Mittlerweile habe ich es geschafft zu Sortieren das array, aber ändern:

public static void sortStrings(){
        String[] stringsArray = "The quick brown fox has a dirty ladder".split("\\s+");
        System.out.println(
                Arrays.stream(stringsArray)
                .map(String::toLowerCase)
                .sorted(Comparator.reverseOrder())
                .collect(Collectors.toList())
        );
}

Also, was ist die einfachste Lösung?

Ich fand die Lösung : .sortiert((String e) -> e -.toLowerCase) . Inzwischen habe ich gebeten, eine Löschung der post, wie es scheint so offensichtlich für mich wissen, ich könnte es gefunden haben, ohne dass die Frage gestellt ...
Der erste code-snippet kompiliert einwandfrei. Sind Sie auf einem alten build von Java 8? Oder vielleicht kompilieren in eclipse? Das problem, das Sie erwähnen, wurde behoben in build 129. Siehe auch stackoverflow.com/q/21751830/829571

InformationsquelleAutor loloof64 | 2014-04-08

Schreibe einen Kommentar