답변:
toCharArray뒤에 Arrays.sort문자열 생성자 호출이옵니다.
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);
}
}
편집 : tackline이 지적했듯이 문자열에 대리 쌍 또는 실제로 복합 문자 (액센트 + e가 별도의 문자) 등이 포함되어 있으면 실패합니다.이 시점에서 훨씬 어려워집니다 ... 또한 이것은 대문자, 악센트 또는 다른 것을 고려하지 않고 서수로 주문하는 것입니다.
sorted이미 String... ... 당신은 무엇을 부를 것으로 기대 toString()합니까?
char[] c = s.toCharArray(); Arrays.sort(c); String sorted = new String(c);
내장 String 메소드가 없습니다. char 배열로 변환하고 Arrays.sort를 사용하여 정렬 한 다음 다시 문자열로 변환 할 수 있습니다.
String test= "edcba";
char[] ar = test.toCharArray();
Arrays.sort(ar);
String sorted = String.valueOf(ar);
또는 대문자 및 악센트 부호가있는 문자와 같은 로케일 특정 항목을 올바르게 처리하려는 경우 :
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é"
}
}
Java 8에서는 다음을 수행 할 수 있습니다.
String s = "edcba".chars()
.sorted()
.collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
.toString();
길이가 1 인 문자열 스트림에서 작동하는 약간 짧은 대안은 다음과 같습니다 (정렬되지 않은 문자열의 각 문자는 스트림의 문자열로 변환 됨).
String sorted =
Stream.of("edcba".split(""))
.sorted()
.collect(Collectors.joining());
문자 배열로 변환 → 정렬 → 문자열로 다시 변환 :
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"
sort Arrays.sort 메소드를 사용하지 않고 더 원시적 인 접근법. 삽입 정렬을 사용하고 있습니다.
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 input = "world";
char[] arr = input.toCharArray();
Arrays.sort(arr);
String sorted = new String(arr);
System.out.println(sorted);
질문 : 자바에서 문자열 정렬
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);
}
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);
}
}
산출:
문자열을 입력하십시오 ==
정렬
정렬 후 == ginorst