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._.