首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对字符串流中的每个字符串进行排序?

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

Stack Overflow用户
提问于 2021-12-09 04:41:53
回答 2查看 134关注 0票数 2

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

代码语言:javascript
复制
Stream<String> sortedStream = validWordStream.map(s -> Arrays.sort(s.toString().toCharArray()));

但是,它抱怨返回的流是对象流,而不是String:

问题

我需要对map()函数进行哪些直观的更改,以便得到排序的字符串流?

EN

回答 2

Stack Overflow用户

发布于 2021-12-09 05:20:28

由于Array.sort的返回类型是void,所以不能将其值用作map结果。而且,如果存在代理项对,则不会得到正确的结果。

所以:

代码语言:javascript
复制
Stream<String> validWord = foo();
Stream<String> validSortedWord = validWord
    .map(s -> s.codePoints().sorted().toArray())
    .map(sortedCodepoints -> new String(sortedCodePoints, 0, sortedCodePoints.length))

(编辑:更改字符串构造函数的第三个参数,请参见Sree Kumar的注释)

票数 3
EN

Stack Overflow用户

发布于 2021-12-09 07:09:43

对每个char数组进行排序,然后生成一个新字符串:

代码语言:javascript
复制
Stream<String> sortedStream = validWordStream
      .map(s -> { char[] c = s.toCharArray(); 
                  Arrays.sort(c);
                  return new String(c);});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70284802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档