【发布时间】:2014-04-08 12:26:19
【问题描述】:
我正在尝试按相反的顺序(忽略大小写)对字符串数组进行排序,而不修改它,只打印它。所以我正在使用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())
);
}
那么,最简单的解决方法是什么?
【问题讨论】:
-
我找到了解决方案: .sorted((String e) -> e.toLowerCase) 。同时,我要求删除该帖子,因为这对我来说似乎很明显,我可以在不问问题的情况下找到它...
-
你的第一个代码 sn-p 编译得很好。您使用的是 Java 8 的旧版本吗?或者也许在eclipse中编译?您提到的问题已在 build 129 中修复。另请参阅 stackoverflow.com/q/21751830/829571
标签: java comparator java-8 java-stream method-reference