[JAVA] 배열 정렬하기

컴투루·2022년 6월 22일
0

Java

목록 보기
1/4

프로그래머스 문제를 풀던 중 배열을 정렬하는 문제들을 많이 접하게 되었고 부족하다고 생각❗️따로 정리해보려한다.

📌 Arrays.sort()

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 입니다.


📌 Comparable/ Comparator

내림차순이나 원하는대로 정렬조건을 다르게 하기 위해서는

  • Comparable 인터페이스의 compareTo()메서드를 원하는 조건으로 오버라이드
  • java.util.Comparator를 구현한 Class내 compare() 메서드를 원하는 정렬조건으로 오버라이드하여 sort 메서드 호출시 구현한 Comparator클래스를 명시해줌

따라서 내림차순을 구하기 위해서

Arrays.sort(arr,Collections.reverseOrder());

Arrays.sort(arr,Comparator.reverseOrder());

위와같이 reverseOrder()메서드를 사용해서 이미 내림차순으로 구현되어있는 Comparator를 반환할 수 있습니다.

원하는 조건으로 정렬조건을 적요하고 싶다면 Comparator인터페이스의 compare메서드를 오버라이드한 Class를 재정의해서 넘겨주면 됩니다.


📌 Stream API

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

https://ifuwanna.tistory.com/232

profile
맘 먹으면 못할 게 없지

0개의 댓글