- Today
- Total
- 백준 #자바
- JAVA #프로그래머스 #문자열 내림차순으로 배치하기
- Java
- JAVA #코드업 #기초 100제
- 자바 #JAVA #프로그래머스 #정수 내림차순으로 배치하기
- 게임 맵 최단거리 #자바 #JAVA #프로그래머스
- servlet
- Could not resolve all files for configuration
- JAVA #자바 #프로그래머스 #숫자의 표현
- 최대값과 최솟값
- JAVA #자바 #프로그래머스 #두 정수 사이의 합
- 문자열 다루기 기본 #자바 #JAVA
- 프로그래머스
- JAVA #핸드폰 번호 가리기 #프로그래머스 #자바
- JAVA #자바 #프로그래머스 #나머지가 1이되는 수
- 자바 #프로그래머스 #JAVA #최솟값 만들기 #코딩테스트
- JAVA #프로그래머스
- 빌드 에러
- JAVA #백준
- 콜라츠 추측 #자바 #JAVA #프로그래머스
- JAVA #자바 #프로그래머스 #서울에서 김서방 찾기
- 데이터베이스 #DB #데이터 #정의 #기본
- 스프링 #의존성 주입 #DI
- JAVA #프로그래머스 #약수의 개수와 덧셈
- SW공학
- 백준 #JAVA #자바
- 자바 #프로그래머스 #JAVA #다음 큰 숫자
- 나누어 떨어지는 숫자 배열 #자바 #JAVA #프로그래머스
- 최대값과 최솟값 #자바 #JAVA
- IntelliJ #인텔리제이 #교육용
MOMONOTE
배열의 정렬 (Arrays.sort , Comparator, compareTo , compare) 본문
배열의 정렬 (Arrays.sort , Comparator, compareTo , compare)
momo0503 2021. 2. 23. 16:31배열을 오름차순으로 정렬하기 위해선 util.Arrays를 import하고 Arrays.sort(arr); 를 하면된다.
배열을 내림차순으로 정렬하기 위해 Collections.reverseOrder() 사용한다. 이때 배열은 원시타입을 사용하면 안된다.
Collections.reverseOrder()는 Comparator 객체입니다. Comparator는 직접 구현해야하지만, 내림차순은 자주 사용되기 때문에 Collections에서 기본으로 제공해준다.
import java.util.Arrays;
import java.util.Collections;
public class Test {
public static void main(String[] args) {
Integer[] arr = new Integer[5];
arr[0] = 5; arr[1] = 6; arr[2] = 2; arr[3] = 1; arr[4] = 3;
Arrays.sort(arr, Collections.reverseOrder());
for(int i =0;i<5;i++) {
System.out.println(arr[i]);
}
}
}
내림차순 직접 구현하기
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
public class Test {
public static void main(String[] args) {
Integer[] arr = new Integer[5];
arr[0] = 5; arr[1] = 6; arr[2] = 2; arr[3] = 1; arr[4] = 3;
//내림차순 직접 구현하기
Arrays.sort(arr, new Comparator<Integer>(){
@Override
public int compare(Integer a, Integer b) {
//return b-a; //이것도 가능
return b.compareTo(a);
}
});
for(int i =0;i<5;i++) {
System.out.println(arr[i]);
}
}
}
compare()
compare() 메서드 작성법
첫 번째 파라미터로 넘어온 객체 < 두 번째 파라미터로 넘어온 객체: 음의 정수 리턴
첫 번째 파라미터로 넘어온 객체 == 두 번째 파라미터로 넘어온 객체: 0 리턴
첫 번째 파라미터로 넘어온 객체 > 두 번째 파라미터로 넘어온 객체: 양의 정수 리턴
return 타입이 int 형이다.
음수 또는 0이면 객체의 자리가 그대로 유지되며, 양수인 경우에는 두 객체의 자리가 변경된다.
예를들어 { 2, 1, 3 } 이라는 배열이 있고, public int compare(int a1, int a2) { return a1 - a2 } 가 있다고 가정해보자.
그렇다면 맨 처음 a1 은 2 가 될테고, a2 는 1이 된다. 즉, 2 - 1 = 1 이므로 양수가 반환되기 때문에 a1 과 a2, 즉 2 와 1 의 위치가 서로 바뀌게 된다. 그러면 { 1, 2, 3 } 이 되겠다.
그 다음 a1, a2 는 각각 2 와 3이 될테고, 2 - 3 = -1 이므로 음수가 반환되어 두 객체 2와 3은 위치가 바뀌지 않는다.
이렇게 compare 메소드는 3가지 반환값에 의해 두 객체(인자)의 위치를 바꾸거나 그대로 둔다.
compareTo()
compareTo() 함수에는 위에서 설명하는바와 같이 "문자열의 비교" 와 "숫자의 비교" 두 방식이 존재한다.
숫자의 비교 같은 경우는 단순히 크다(1), 같다(0), 작다(-1) 의 관한 결과값을 리턴해주는 반면
문자열의 비교 같은 경우는 같다(0), 그 외 양수/음수값 같이 참 재미난 결과를 반환해준다.
compareTo 에 상세 비교에 관한 내용
출처: https://mine-it-record.tistory.com/133
[JAVA] 자바_compareTo ( 값 [문자열/숫자] 비교 )
-마지막 수정날짜 : 2021-01-01- 과거 기록한 글이나 보기 힘든 부분도 있고 잘못 작성된 부분이 있어 내용 일부분 수정하였습니다. (잘못된 내용이 있는부분 적어주시면 바로바로 수정하겠습니다.)
mine-it-record.tistory.com
compare() 의 예시 설명 출처
[백준] 1181번 : 단어 정렬 - JAVA [자바]
www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1≤N≤20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문
st-lab.tistory.com
외 각종 책 및 공식 문서 정리하여 내가 알기 쉽게 정리.
'알고리즘, 코딩테스트 > 자주나오는, 메서드 정리, 자료구조 등' 카테고리의 다른 글
Compareble 인터페이스 , compareTo() (0) | 2021.03.30 |
---|---|
(JAVA) 이중 배열 (0) | 2021.03.29 |
우선순위 큐 (Priority Queue) (0) | 2021.01.17 |
JAVA 자주 사용하는 메서드, API클래스 정리 (0) | 2021.01.10 |
Scanner 클래스(JAVA) (0) | 2020.11.19 |