我正在尝试将map()函数应用于字符串流,以便新流包含每个字符串的排序版本。也就是说,它不是“猫”,而是“行动”。我试图按如下方式运行该方法:
Stream<String> sortedStream = validWordStream.map(s -> Arrays.sort(s.toString().toCharArray()));但是,它抱怨返回的流是对象流,而不是String:

问题
我需要对map()函数进行哪些直观的更改,以便得到排序的字符串流?
发布于 2021-12-09 05:20:28
由于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))(编辑:更改字符串构造函数的第三个参数,请参见Sree Kumar的注释)
发布于 2021-12-09 07:09:43
对每个char数组进行排序,然后生成一个新字符串:
Stream<String> sortedStream = validWordStream
.map(s -> { char[] c = s.toCharArray();
Arrays.sort(c);
return new String(c);});https://stackoverflow.com/questions/70284802
复制相似问题