250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 백준#boj#12755
- 백준#BOJ#8012#한동이는영업사원
- 백준#BOJ#1939#중량제한
- 백준#BOJ#14501#퇴사#브루트포스
- 백준#BOJ#2615#오목
- 백준#boj#16932#모양만들기
- 백준#BOJ#12865#평범한배낭
Archives
- Today
- Total
순간을 성실히, 화려함보단 꾸준함을
[Java8] Arrays.sort 람다(lambda)를 사용해서 내림차순 해보기 본문
요즘 lambda
와 stream
을 사용하는 것에 조금 집중하려고 하는데 이게 자바에서 함수형 프로그래밍을 쓰는게 되게 어렵네요....ㅠ
먼저 Arrays.sort()
를 이용해서 정렬한 후에 stream()
을 사용해서 출력까지 해보겠습니다.
public static void solve() {
int []arr = new int[4];
//Integer []arr = new Integer[4];
for(int i=0;i<4;i++)
arr[i]= scan.nextInt();
Arrays.sort(arr);
//Arrays.sort(arr,(x,y)->y-x);
Arrays.stream(arr).forEach(x-> System.out.print(x));
}
딱히 어려운건 없습니다. 오름차순은 이런식으로 하면 됩니다.
그러나 문제는 내림차순을 하는 것인데, Comparator
을 사용해서 내림차순을 할 수 있지만 전 lambda
를 사용해서 내림차순을 진행보도록 하겠습니다.
그냥 단순하게 생각했을때는
public static void solve() {
int []arr = new int[4];
//Integer []arr = new Integer[4];
for(int i=0;i<4;i++)
arr[i]= scan.nextInt();
//Arrays.sort(arr);
Arrays.sort(arr,(x,y)->y-x);
Arrays.stream(arr).forEach(x-> System.out.print(x));
}
이렇게 Arrays.sort(arr,(x,y)->y-x)
평범하게 알고 있는 람다식을 사용해주면 될 것 같습니다.
그러나 이는 에러가 발생합니다 ㅠㅠㅠ
이를 해결하기 위해선 int
인 primitive 자료형을 사용하는 것이 아니라 Integer
와 같은 primitive 자료형을 객체로 다루기 위해 사용하는 Wrapper class를 사용해 주면 됩니다.
public static void solve() {
//int []arr = new int[4];
Integer []arr = new Integer[4];
for(int i=0;i<4;i++)
arr[i]= scan.nextInt();
//Arrays.sort(arr);
Arrays.sort(arr,(x,y)->y-x);
Arrays.stream(arr).forEach(x-> System.out.print(x));
}
bupjae 님의 말씀을 첨부하면
Arrays.sort(int[]) 에는 Comparator 를 입력받는 오버로드가 없기 때문에 Comparator 를 사용할 수 없습니다.
Integer[] 를 사용할 때에는 Arrays.sort(T[], Comparator<? super T>) 를 호출할 수 있습니다.
라고 하십니다. 감사합니다.
'알고리즘,SQL > 백준,BOJ' 카테고리의 다른 글
[ boj : 23562 ] ㄷ 만들기 (0) | 2021.12.13 |
---|---|
[자바 입출력] System.out.println()을 쓰지 말자! (0) | 2021.12.12 |
[ boj : 23560 ] 약 (0) | 2021.12.10 |
[ boj : 23559 ] 밥 (2) | 2021.12.10 |
[ boj : 22254 ] 공정 컨설턴트 호석 (0) | 2021.12.01 |