java - 如何对字符串流中的每个字符串进行排序?

标签 java string java-stream

我现在正在尝试将 map() 函数应用于字符串流,以便新流包含每个字符串的排序版本。也就是说,它将用“act”代替“cat”。我正在尝试按如下方式运行该方法:

Stream<String> sortedStream = validWordStream.map(s -> Arrays.sort(s.toString().toCharArray()));

但是,它提示返回的流是对象流,而不是字符串: enter image description here

问题

我必须对 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/

相关文章:

java - 如何检查接口(interface)列表中使用了哪个实现

java - 覆盖 toString() 给出错误

java - 如何从 Java 8 lambda/流内部抛出 CHECKED 异常?

java - 我应该尽可能使用并行流吗?

java - 定位器不起作用,除了 WebView 中 Appium for Android 上的 id

java - 使用 Jersey 客户端进行 POST 操作

java - 查找字符串中的第一个非重复字符

string - Lua 字符串模式 - 更短的代码

c - 从字符串元素中取值并将取值与两位数相加

java - Scala Stream 与 Java Stream 懒惰差异