![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/001.gif)
알고리즘 문제를 풀 때 마다 정렬 할 일이 정말 많이 생기는데
그 때 마다 자꾸 깜박해서 찾아보게된다.....
일단 java.util에 있는 Arrays클래스를 사용하기 위해
import java.util.Arrays를 최상단에 추가해준다!
📈오름차순
- int형
int [] arr = {6,7,1,5,3};
Arrays.sort(arr);
//결과 1,3,5,6,7
- String형
String [] arr = {"a","c","b"};
Arrays.sort(arr);
//결과 a,b,c
오름차순은 까먹지 않는다.. 그래도 정리,,
📉내림차순
내림차순은 까먹는다 .. ㅠㅠ
- int형
방법1
int[] arr = {6,7,1,5,3};
Integer[] arr2 = Arrays.stream(arr).boxed().toArray(Integer[]::new); //박싱
Arrays.sort(arr,Collections.reverseOrder());
//결과 7,6,5,3,1
int형 배열 -> Integer 배열로 boxing( Primitive 자료형 -> Wrapper 클래스)
Arrays.sort로 정렬
방법2
arr = Arrays.stream(arr)
.boxed().sorted(Collections.reverseOrder())
.mapToInt(Integer::intValue).toArray();
이렇게 한번에 int형 배열을 Integer 배열로 boxing( Primitive 자료형 -> Wrapper 클래스)하고 정렬 후 다시 int형 배열로 바꿔줘도 된다.
왜 int는 안되고 Integer는 되나요?
sort 메소드
public static <T> void sort(T[] a, Comparator<? super T> c) {
if (c == null) {
sort(a);
} else {
if (LegacyMergeSort.userRequested)
legacyMergeSort(a, c);
else
TimSort.sort(a, 0, a.length, c, null, 0, 0);
}
}
public static <T> void sort(T[] a, Comparator<? super T> c) {...}
매개변수로 받아오는 c를 보면 Comparator<? super T> T는 제네릭 클래스로 어떠한 객체도 받아오게 되어 있다.
하지만 int는 primitive data type으로 허용이 되지 않는것이다.
- String형
String [] arr = {"a","c","b"};
Arrays.sort(arr,Collections.reverseOrder());
//결과 c,b,a
String은 간단하다.
끝
반응형
'📚Language > JAVA' 카테고리의 다른 글
[JAVA] JVM(Java Virtual Machine)에 대해서 (0) | 2022.01.09 |
---|---|
[ERROR] java Runtime (class file version 59.0), this version of the Java Runtime only recognizes class file versions up to 52.0 해결 (0) | 2021.12.05 |