为什么以下代码不起作用?
String s = "fecbda";
Arrays.sort(s.toCharArray());
System.out.println(s);
答案 0 :(得分:2)
字符串是不可变的,所以你不能改变它们,你不应该期望这样做。
您可能想要的是
endDate = new Date(endDate);
答案 1 :(得分:1)
它不能用作s.toCharArray()
:
返回: 新分配的字符数组,其长度为此字符串的长度,其内容初始化为包含此字符串表示的字符序列。
文档的操作部分是它创建了一个 new 数组(即字符串中字符的副本),当你对该数组进行排序时,你不对String进行排序。
你不能对字符串进行排序,因为它是不可变的,但是你可以从排序字符数组中创建一个新字符串,如下所示:
String s = "fecbda";
char[] c = s.toCharArray();
Array.sort( c );
String n = new String( c );
作为替代方法,您可以使用流在Java 8中执行此操作:
String s = "fecbda";
String n = s.chars() // Convert to an IntStream of character codes
.sorted() // Sort
.mapToObj(i -> Character.toString((char) i)) // Convert to strings
.collect(Collectors.joining()); // Concatenate the strings.