List 정렬

이수보🧑🏻‍💻·2022년 1월 26일
0

고급

목록 보기
1/3

정렬

정렬은 크게 두 가지로 나뉩니다. 오름차순 / 내림차순
또한 알고리즘으로 정렬을 한 번씩 연습 해봤을 정도로 자주 쓰입니다.

자주 쓰이고 중요한 기능이기 때문에 자바에서는 정렬 기능을 제공해주고 있습니다.

오늘은 Collection의 List타입을 이용해서 정렬을 해보겠습니다.
List 이외에도 String, Wrapper, Date, File 클래스 등도 내부적으로 정렬 기준이 구현되어 있습니다.

Collections.sort();

List를 정렬하는데 Collection을 사용합니다. List는 Collection을 상속받았기 때문입니다.

일단 정렬에 필요한 준비물을 준비합시다.

ArrayList<String> list = new ArrayList<>();

list.add("2");
list.add("3");
list.add("1");
list.add("4");


위 list를 출력해보면
[2, 3, 1, 4] 가 나올겁니다.


정렬이 필요해 보입니다.
한 번 정렬해줍시다.

  • 오름차순
Collections.sort(list);

정렬이 끝났습니다. 정말 간단하죠?
이제 리스트를 출력해보면
[1, 2, 3, 4] 가 출력될 것입니다.

기본은 오름차순입니다.
그럼 내림차순으로 하기 위해선 어떻게 할까요? 뭔가 리버스 해주는 메서드가 있을것 같지 않나요?

  • 내림차순
Collections.sort(list, Collections.reverseOrder());

내림차순 정렬이 끝났습니다.
결과는 [4, 3, 2, 1] 입니다.
그 동안 직접 알고리즘을 짜서 정렬했던 자신에게 현타가 올 수 있습니다만

sort 메소드 내부를 살펴보다 보면 우리가 했던 정렬 알고리즘이 그 안에 가득할 것입니다.
그 말은 즉슨, 우리의 노력은 헛되지 않았다는 걸 기억해 주시면 됩니다.


  • 정렬 기준 사용자 정의

그렇다면 정렬에 오름차순 / 내림차순만 있을까요? 내가 원하는 정렬의 기준이 있을지도 모르죠
그럼 직접 정렬 인터페이스를 @Override 하여 정렬 기준을 한 번 만들어 봅시다.

정렬 인터페이스는 Comparator와 Comparable 이 존재합니다.

Comparator : compare 메서드가 존재하며 매개변수는 2개로 서로 다른 객체 2개를 비교합니다.
Comparable : compareTo 메서드가 존재하며 매개변수는 하나로 자기자신과 자신을 비교할 때 주로                   사용합니다.

0개의 댓글