로컬에서는 잘 되는데 ☘️

Java : Stream 문자열 배열 정렬(내림차순, compareTo 재구현)

by youngjun._.

1.문자열 배열 기본 정렬

Java의 문자열을 Stream을 통해 정렬할 수 있다.

오름차순

Arrays.stream(strArr) .sorted()

String[] strArr = {"2", "3", "1"};
String sortedStr = Arrays.stream(strArr)
        .sorted()
        .collect(Collectors.joining());
System.out.println("sortedStr = " + sortedStr);

/* 실행 결과
sortedStr = 123
 */

내림차순

Arrays.stream(strArr) .sorted(Comparator.reverseOrder())

String[] strArr = {"2", "3", "1"};
String sortedStr = Arrays.stream(strArr)
        .sorted(Comparator.reverseOrder())
        .collect(Collectors.joining());
System.out.println("sortedStr = " + sortedStr);

/* 실행 결과
sortedStr = 321
 */

2.문자열 배열 응용 정렬

알고리즘을 풀다보면 정렬 조건이 다양하게 등장한다.

이를 구현하기 위해 compareTo 조건을 바꿀 수 있다.

문자열 조합 중 가장 큰 수

sorted((s1, s2) -> (s2 + s1).compareTo(s1 + s2))

쉽게 응용하기

메소드 레퍼런스를 활용하여, 내부 함수를 호출하고 로직은 compare() 함수에서 구현해준다.

public class Solution {

    public String solution(int[] numbers) {
        String[] strArr = {"2", "3", "1"};
        String sortedStr = Arrays.stream(strArr)
                .sorted(Solution::compare)
                .collect(Collectors.joining());
        System.out.println("sortedStr = " + sortedStr);
    }
    
    private int compare(String s1, String s2) {
        // compareTo를 재구현해도 된다.
        return (s2 + s1).compareTo(s1 + s2);
    }

}

 

블로그의 정보

개발하는만두

youngjun._.

활동하기