【发布时间】:2022-01-13 23:34:58
【问题描述】:
我现在正在尝试将 map() 函数应用于字符串流,以便新流包含每个字符串的排序版本。也就是说,它不是“cat”,而是“act”。我正在尝试这样运行该方法:
Stream<String> sortedStream = validWordStream.map(s -> Arrays.sort(s.toString().toCharArray()));
问题
我必须对 map() 函数进行哪些直观的更改才能获得排序字符串流?
【问题讨论】:
-
您需要将已排序的字符数组转换回字符串。
-
Arrays.sort方法不返回任何内容,它不是函数,它对数组进行就地排序。你不能像这样对流使用它。你可以做类似s -> { char[] array = s.toCharArray(); Arrays.sort(array); return new String(array); } -
顺便说一下,
char类型自 Java 2 以来一直是遗留的。作为 16 位值,它在物理上无法表示大多数字符。学习使用代码点整数而不是处理单个字符。 -
@BasilBourque 处理
String在代码点方面的API 已在Java 5 中引入。但是以这种方式对字符串的字符进行排序的想法无论如何仅适用于ASCII 字母。否则,您必须考虑字素簇,并讨论操作在更改位置时是否应在σ和ς之间转换等。
标签: java string java-stream