我想确定列表是否是使用Java 8的字谜.
输入示例:
"cat", "cta", "act", "atc", "tac", "tca"
Run Code Online (Sandbox Code Playgroud)
我已经编写了以下功能来完成这项工作,但我想知道是否有更好,更优雅的方法来做到这一点.
boolean isAnagram(String[] list) {
long count = Stream.of(list)
.map(String::toCharArray)
.map(arr -> {
Arrays.sort(arr);
return arr;
})
.map(String::valueOf)
.distinct()
.count();
return count == 1;
}
Run Code Online (Sandbox Code Playgroud)
看来我不能用Stream.sorted()方法对char数组进行排序,这就是我使用第二个map运算符的原因.如果有一些方法可以直接在char流而不是Stream of char数组上运行,那也会有所帮助.