我现在正在尝试将 map() 函数应用于字符串流,以便新流包含每个字符串的排序版本。也就是说,它将用“act”代替“cat”。我正在尝试按如下方式运行该方法:
Stream<String> sortedStream = validWordStream.map(s -> Arrays.sort(s.toString().toCharArray()));
问题
我必须对 map() 函数进行哪些直观的更改才能获得排序字符串流?
最佳答案
由于Array.sort
的返回类型为void
,因此不能将其值用作map
结果。
此外,如果存在代理对,您将不会得到正确的结果。
所以:
Stream<String> validWord = foo();
Stream<String> validSortedWord = validWord
.map(s -> s.codePoints().sorted().toArray())
.map(sortedCodepoints -> new String(sortedCodePoints, 0, sortedCodePoints.length))
(编辑:更改了 String 构造函数的第三个参数,请参阅 Sree Kumar 的评论)
关于java - 如何对字符串流中的每个字符串进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70284802/