Почему Comparator.comparing не работает со ссылкой на метод String :: toLowerCase?
Я пытаюсь отсортировать массив строк в обратном порядке (игнорируя регистр), не изменяя его, а просто распечатывая его. Поэтому я использую поток Java8. Но я не могу этого сделать.
Вот моя попытка:
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())
);
}
}
Проблема здесь в том, чтоString::toLowerCase
не принимается в статическом методеComparator.comparing
.
Между тем мне удалось отсортировать массив, номодифицирующий Это:
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())
);
}
Итак, каков самый простой обходной путь?