Programming

Java에서 단일 문자열 정렬

procodes 2020. 7. 16. 21:16
반응형

Java에서 단일 문자열 정렬


Java의 내용별로 문자열을 정렬하는 기본 방법이 있습니까? 예 :

String s = "edcba"  ->  "abcde"

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가 별도의 문자) 등이 포함되어 있으면 실패합니다.이 시점에서 훨씬 어려워집니다 ... 또한 이것은 대문자, 악센트 또는 다른 것을 고려하지 않고 서수로 주문하는 것입니다.


내장 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());

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 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"

    String a ="dgfa";
    char [] c = a.toCharArray();
    Arrays.sort(c);
    return new String(c);

대소 문자가 혼합 된 문자열 인 경우 예상대로 작동하지 않습니다 (소문자 앞에 대문자를 넣음). Comparator를 Sort 메서드에 전달하여이를 변경할 수 있습니다.


절차 :

  1. 처음에는 문자열을 char 배열로 변환하십시오.
  2. 그런 다음 문자 배열을 정렬하십시오.
  3. 문자형 배열을 문자열로 변환
  4. 문자열을 인쇄

코드 스 니펫 :

    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

참고URL : https://stackoverflow.com/questions/605891/sort-a-single-string-in-java

반응형