일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 데이터베이스 기초지식
- 자바 1193
- 웹 기술면접
- 괄호의값 스택
- 조인종류
- 유니온 파인드
- 백준 괄호의값 자바
- 자바 2869
- 온라인쇼핑
- 1062번 가르침
- 백준 1806 자바
- 백준 줄세우기 자바
- 백준 멀티탭스케줄링 자바
- Spring Security
- 다익스트라 최소비용구하기
- 백준 1193
- 커머스기사
- 이커머스
- 팀프로젝트
- 기업분석
- 라이브커머스
- Union Find
- 개발일지
- 백준 최소비용구하기 자바
- 줄세우기 위상정렬
- 인사관리사이트
- 백준 1700 자바
- 백준 2252 자바
- 2504 괄호의값 자바
- 프로그래머스
Archives
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 데이터베이스 기초지식
- 자바 1193
- 웹 기술면접
- 괄호의값 스택
- 조인종류
- 유니온 파인드
- 백준 괄호의값 자바
- 자바 2869
- 온라인쇼핑
- 1062번 가르침
- 백준 1806 자바
- 백준 줄세우기 자바
- 백준 멀티탭스케줄링 자바
- Spring Security
- 다익스트라 최소비용구하기
- 백준 1193
- 커머스기사
- 이커머스
- 팀프로젝트
- 기업분석
- 라이브커머스
- Union Find
- 개발일지
- 백준 최소비용구하기 자바
- 줄세우기 위상정렬
- 인사관리사이트
- 백준 1700 자바
- 백준 2252 자바
- 2504 괄호의값 자바
- 프로그래머스
Archives
- Today
- Total
JumpUp
[JAVA 정렬] Comparable과 Comparator 본문
Java 정렬 방법
Arrays.sort() //배열 정렬
기본 정렬조건은 오름차순이다.
*Arrays.sort(배열, 시작인덱스, 종료인덱스) // index에 포함되는 구간만 정렬하는 것도 가능하다.
*Arrays.sort(배열, new Comparator<>())도 가능
Collections.sort() //리스트를 정렬
java.util.Collections클래스의 static메소드인 sort()를 이용한다.
위와 같이
sort(리스트) //오름차순 정렬, 이때 T는 comparable인터페이스를 구현한 타입이어야 한다.
sort(리스트, Comparactor) //기존 정렬 기준과 다른 방식으로 정렬할 때 사용
사용하는 메소드가 있다.
1. Comparable<T> 인터페이스
compareTo(T other)
이 메소드만 오버라이딩 해주면 Collections.sort()의 매개변수로 리스트를 넘겨서 정렬을 할 수 있다.
기본적으로 오름차순, 문자열은 사전 순으로 정렬되도록 구현하고 있다.
2. Comparactor<T> 인터페이스 이용
사용자가 원하는 임의의 정렬 기준대로 정렬하고 싶을 때 구현하는 것이다.
compare() 메소드만 오버라이딩 해주면 된다.
그리고 나서 Collections.sort(리스트, Comparator인터페이스를 구현한 클래스의 인스턴스)해주면 정렬할 수 있다.
class student implements Comparator<String> {
@Override
public int compare(String o1, String o2){
//return o1.compareTo(o2); //오름차순
return o2.compareTo(o1); //내림차순
}
}
Comparator인터페이스 구현없이 Comparator인스턴스 생성과 동시에 compare()메서드를 오버라이드하는 것도 가능
Collections.sort(list, new Comparator<String>(){
@Override
public int compare(String o1, String o2){
return o2.compareTo(o1); //내림차순
}
});
3. 자바 스트림 및 람다 이용 (자바8부터 가능)
String str = "ACBED";
String[] stringArr = str.split(""); // new String[] {"A","C","B","E","D"} 배열로 변환
String streamSortASC = Stream.of(stringArr).sorted().collect(Collectors.joining()); //오름차순
String streamSortDESC = Stream.of(stringArr).sorted(Comparator.reverseOrder()).collect(Collectors.joining()); // 내림차순
//Lambda
String streamSortASC_Lambda = Stream.of(stringArr).sorted((o1,o2)->o1.compareTo(o2)).collect(Collectors.joining());
//오름차순
String streamSortDESC_Lambda = Stream.of(stringArr).sorted((o1,o2)->o2.compareTo(o1)).collect(Collectors.joining());
// 내림차순
출처:
https://ifuwanna.tistory.com/232
[IfUwanna IT]
728x90
'알고리즘' 카테고리의 다른 글
프로그래머스 [폰켓몬] (0) | 2021.04.02 |
---|---|
프로그래머스 [나누어 떨어지는 숫자 배열]_Stream (0) | 2021.03.22 |
프로그래머스 [Lv1. 소수찾기]_ 에라토스테네스의 체 (0) | 2021.03.18 |
프로그래머스 [최대공약수와 최소공배수],[N개의최소공배수]_유클리드 호제법 gcd(a,b)=gcd(b,r) (0) | 2021.03.05 |
[JAVA] codeUp 기초100제 (0) | 2021.02.24 |