Câu trả lời:
toCharArray
theo sau Arrays.sort
là một lệnh gọi hàm tạo chuỗi:
import java.util.Arrays;
public class Test
{
public static void main(String[] args)
{
String original = "edcba";
char[] chars = original.toCharArray();
Arrays.sort(chars);
String sorted = new String(chars);
System.out.println(sorted);
}
}
EDIT: Như tackline chỉ ra, điều này sẽ thất bại nếu chuỗi chứa các cặp thay thế hoặc các ký tự hỗn hợp thực sự (dấu + e là các ký tự riêng biệt), v.v. Tại thời điểm đó, nó sẽ khó hơn rất nhiều ... hy vọng bạn không cần điều này :) Ngoài ra, đây chỉ là thứ tự theo thứ tự, mà không cần viết hoa, dấu hoặc bất cứ điều gì khác vào tài khoản.
sorted
đã là một String
... bạn muốn gọi toString()
nó để làm gì?
char[] c = s.toCharArray(); Arrays.sort(c); String sorted = new String(c);
Không có không có phương thức String tích hợp. Bạn có thể chuyển đổi nó thành một mảng char, sắp xếp nó bằng Arrays.sort và chuyển đổi nó trở lại thành Chuỗi.
String test= "edcba";
char[] ar = test.toCharArray();
Arrays.sort(ar);
String sorted = String.valueOf(ar);
Hoặc, khi bạn muốn xử lý chính xác các nội dung cụ thể của miền địa phương như chữ hoa và ký tự có dấu:
import java.text.Collator;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Locale;
public class Test
{
public static void main(String[] args)
{
Collator collator = Collator.getInstance(new Locale("fr", "FR"));
String original = "éDedCBcbAàa";
String[] split = original.split("");
Arrays.sort(split, collator);
String sorted = "";
for (int i = 0; i < split.length; i++)
{
sorted += split[i];
}
System.out.println(sorted); // "aAàbBcCdDeé"
}
}
Trong Java 8, nó có thể được thực hiện với:
String s = "edcba".chars()
.sorted()
.collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
.toString();
Một thay thế ngắn hơn một chút hoạt động với Luồng chuỗi có độ dài một (mỗi ký tự trong Chuỗi chưa được sắp xếp được chuyển đổi thành Chuỗi trong Luồng) là:
String sorted =
Stream.of("edcba".split(""))
.sorted()
.collect(Collectors.joining());
Chuyển đổi thành mảng ký tự → Sắp xếp → Chuyển đổi trở lại Chuỗi :
String s = "edcba";
char[] c = s.toCharArray(); // convert to array of chars
java.util.Arrays.sort(c); // sort
String newString = new String(c); // convert back to String
System.out.println(newString); // "abcde"
Một cách tiếp cận thô hơn mà không sử dụng phương pháp Arrays.sort sắp xếp. Đây là sử dụng sắp xếp chèn.
public static void main(String[] args){
String wordSt="watch";
char[] word=wordSt.toCharArray();
for(int i=0;i<(word.length-1);i++){
for(int j=i+1;j>0;j--){
if(word[j]<word[j-1]){
char temp=word[j-1];
word[j-1]=word[j];
word[j]=temp;
}
}
}
wordSt=String.valueOf(word);
System.out.println(wordSt);
}
String a ="dgfa";
char [] c = a.toCharArray();
Arrays.sort(c);
return new String(c);
Lưu ý rằng điều này sẽ không hoạt động như mong đợi nếu đó là Chuỗi trường hợp hỗn hợp (Nó sẽ đặt chữ hoa trước chữ thường). Bạn có thể truyền một bộ so sánh cho phương thức Sắp xếp để thay đổi điều đó.
Thủ tục:
Đoạn mã:
String input = "world";
char[] arr = input.toCharArray();
Arrays.sort(arr);
String sorted = new String(arr);
System.out.println(sorted);
Câu hỏi: sắp xếp một chuỗi trong java
public class SortAStringInJava {
public static void main(String[] args) {
String str = "Protijayi";
// Method 1
str = str.chars() // IntStream
.sorted().collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append).toString();
System.out.println(str);
// Method 2
str = Stream.of(str.split(" ")).sorted().collect(Collectors.joining());
System.out.println(str);
}
}
public static void main(String[] args) {
String str = "helloword";
char[] arr;
List<Character> l = new ArrayList<Character>();
for (int i = 0; i < str.length(); i++) {
arr = str.toCharArray();
l.add(arr[i]);
}
Collections.sort(l);
str = l.toString();
System.out.println(str);
str = str.replaceAll("\\[", "").replaceAll("\\]", "")
.replaceAll("[,]", "");
System.out.println(str);
}
Không sử dụng Bộ sưu tập trong Java:
import java.util.Scanner;
public class SortingaString {
public static String Sort(String s1)
{
char ch[]=s1.toCharArray();
String res=" ";
for(int i=0; i<ch.length ; i++)
{
for(int j=i+1;j<ch.length; j++)
{
if(ch[i]>=ch[j])
{
char m=ch[i];
ch[i]=ch[j];
ch[j]=m;
}
}
res=res+ch[i];
}
return res;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("enter the string");
String s1=sc.next();
String ans=Sort( s1);
System.out.println("after sorting=="+ans);
}
}
Đầu ra:
nhập chuỗi ==
phân loại
sau khi sắp xếp == ginorst