해결된 질문
작성
·
140
2
강의 후반부에서 print()라는 메소드를 통해 2차원 배열을 출력하셨는데 이게 어떤것인지 알 수 있나요? 보통 System.out.println()이걸 쓰는데 자바에서 저런 메소드도 있었나 궁금합니다!
또 (a, b) -> a[0] - b[0]같은 람다식에서 정렬을 할 때 저 마이너스 기호가 실제 정수에서의 뺴기연산이 맞지요?? 인자로 왜 저런 형태로 넘어가는지 잘 이해가 안갑니다 ㅠㅠ
간략하게나마 설명해주시면 감사하겠습니다!
답변 2
0
0
최용석님 안녕하세요~
질문주신 내용
1번은 화면에 안 보였네요. 아래처럼 밑에 기술되어 있습니다. github에 소스에 있습니다.
private void print(int[][] grid) {
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[0].length; j++) {
System.out.print(grid[i][j] + "\t");
}
System.out.println();
}
}
2. 번 내용
자바에서는 Comparator를 이용해서 정렬을 합니다. 저렇게 하는것은 자바에서 오름 차순 약속인데요
Arrays.sort(intervals, (a,b)->a[0]-b[0]);//오름차순
해석을 하자면요 intervals를 a,b로 빼는데요
intervals 이차원배열이지요 a,b로 빼면 형을 한번 벗겨냅니다.
그러면{ { 7, 10 }, { 2, 4 } } => { 7, 10 }, { 2, 4 } 이렇게 나오죠
0번방은 7,2 이잖아요
이걸 어떻게 해서든지 2,7 순으로 나오게 하는 방법입니다.
두개를 a-b로 한다는 의미는 오름 차순으로 한다는 말입니다.
왜냐면 2-7이 되야 -1을 리턴합니다. -1을 왜 리턴하냐고 물으시면 자바는 내부에서 CompareTo메소드를 사용합니다.
a-b 가 -1을 리턴하면 오름 차순, a-b=1이면 내림차순 , a=b가 동일하면 같은값입니다. 아래표를 보면 조작할 수 있습니다.
(아래표 2번그림)
즉 자바에서는 a-b=-1을 리턴하면 오름차순으로 만들어주겠다고 약속함.
그리고 그 내부에는 CompareTo()메소드가 존재합니다.
이해가 안되시면 외우시면 되요 일단, a-b를 해서 -1로 리턴하면 오름차순
(오른마: 오름차순은 마이너스를 리턴한다)
반대로
Arrays.sort(intervals, (a,b)->b[0]-a[0]);//내림차순이 됩니다.
이해가 잘 안되시면 제 강의 중에 자바개념강의가 있습니다. 자세하게 설명되어 있습니다.
자바에서는 Comparator가 파이썬보다 좀 복잡합니다. ㅜㅜ;
개념을 잘 잡으시면 됩니다.
아래는 캡쳐했어요.참고하세요~