将
String
转换为 IntStream
,对其进行排序并得到 StringBuilder
返回。在调用 toString
后,我看到连接的 ASCII 值与排序的值
字符串格式的字符。这是为什么?解决办法是什么?
class Solution {
public static void main(String[] args) {
String s = "zwdacb";
StringBuilder sb = s.chars().sorted().collect(()->new StringBuilder(),
(x,y)->x.append(y),(StringBuilder sb1, StringBuilder sb2)->sb1.append(sb2));
System.out.println(sb.toString());
}
}
输出
979899100119122
您看到的输出是按排序顺序连接字符的 ASCII 值的结果,而不是字符本身。发生这种情况是因为
sorted()
方法返回字符值(ASCII 值)的 IntStream
,当您将这些值收集到 StringBuilder
中时,它们将被视为整数值。
试试这个:
public static void main(String[] args) {
String s = "zwdacb";
String sortedString = s.chars()
.sorted()
.collect(StringBuilder::new, (sb, c) -> sb.append((char) c), StringBuilder::append)
.toString();
System.out.println(sortedString);
}