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);
    }
}
'Back-End > Java' 카테고리의 다른 글
| @ForceInline 애너테이션 왜 쓸까 (0) | 2022.11.20 | 
|---|---|
| Java : 배열 ↔️ 리스트 변환 (int형 배열 포함) (0) | 2022.03.27 | 
| [Java8] 인터페이스는 어떻게 변화했을까 (0) | 2021.11.19 | 
| [Java] Scanner 정리 (0) | 2020.10.28 | 
| [Java] Generic Class (0) | 2020.10.27 | 
블로그의 정보
개발하는만두
youngjun._.