프로그래머스 문제를 풀던 중 배열을 정렬하는 문제들을 많이 접하게 되었고 부족하다고 생각❗️따로 정리해보려한다.
java.util.Arrays 클래스를 사용하면 배열을 정렬, 복제하거나 List로 변환하는 작업을 쉽게 할 수 있습니다.
1) 오름차순
Arrays.sort(arr);
2) index
정렬대상범위를 지정하여 해당 index에 포함되는 구간만 정렬하는 방법입니다.
int[] intArr = new int[] {58, 32, 64, 12, 15, 99};
Arrays.sort(intArr,1,4);
intArr[1] ~ intArr[3]까지만 정렬하는 것으로 위의 결과는 58 12 32 64 15 99 입니다.
내림차순이나 원하는대로 정렬조건을 다르게 하기 위해서는
따라서 내림차순을 구하기 위해서
Arrays.sort(arr,Collections.reverseOrder());
Arrays.sort(arr,Comparator.reverseOrder());
위와같이 reverseOrder()메서드를 사용해서 이미 내림차순으로 구현되어있는 Comparator를 반환할 수 있습니다.
원하는 조건으로 정렬조건을 적요하고 싶다면 Comparator인터페이스의 compare메서드를 오버라이드한 Class를 재정의해서 넘겨주면 됩니다.
Java8 이상을 사용한다면 배열이나 컬렉션을 다루는 Stream을 이용해서 정렬할 수 있습니다. Stream을 이용하면 Lambda로 표현하여 좀 더 간결하게 표현할 수 있습니다.
String str = "ACBED";
String[] stringArr = str.split("");
String streamSortASC = Stream.of(stringArr)
.sorted()
.collect(Collectors.joining()); //오름차순
String streamSortDESC = Stream.of(stringArr)
.sorted(Comparator.reverseOrder())
.collect(Collectors.joining()); //내림차순
📑 References