1. 정렬
sort()
Arrays.sort() : 배열 정렬
Collections.sort() : List Collection 정렬 ex) ArrayList, LinkedList, Vector
Interface Comparable
-
기본적으로 적용되는 정렬 기준이 되는 메서드를 정의
-
기본적으로 오름차순
-
구현 방법
-
정렬할 객체에 Comparable interface implements
-
compareTo() 메서드 오버라이드
리턴 값이 음수, 0 ⇒ 그대로
리턴 값이 양수 ⇒ 두 객체 swap
-
if(this.o > param.o) return 1 // 오름차순
if(this.o < param.o) return 1 // 내림차순
else return -1
- 예시
@Override
// 오름차 순 (어린거부터)
public int compareTo(Student target) {
// this의 나이가 target의 나이보다 많으면 swap => 오름차순
return this.age >= target.age ? 1 : - 1;
}
// x좌표가 증가하는 순, 같으면 y좌표가 감소하는 순으로 정렬
class Point implements Comparable<Point> {
int x, y;
@Override
public int compareTo(Point p) {
if(this.x > p.x) {
return 1; // x에 대해서는 오름차순
}
else if(this.x == p.x) {
if(this.y < p.y) { // y에 대해서는 내림차순
return 1;
}
}
return -1;
}
}
https://gmlwjd9405.github.io/2018/09/06/java-comparable-and-comparator.html
Interface Comparator
-
정의 : 기본 정렬 기준과 다르게 정렬하고 싶을 때 사용
주로 내림차순 정렬로 바꿀 때
-
구현
1 ) Comparator interface implements
-
compare() 메서드 오버라이드
// x좌표가 증가하는 순, 같으면 y좌표가 감소하는 순 Comparator<Point> myComparator = new Comparator<Point>() { @Override public int compare(Point p1, Point p2) { if(p1.x > p2.x) return 1; else if(p1.x == p2.x) { if(p1.y < p2.y) return 1; }
return -1; }};
// main Collections.sort(pointList, myComparator);
-
2. 디버깅
디버거
- toString() 메서드를 오버라이딩 할 경우 Expression tab에서 객체의 id가 아닌 원하는 멤버의 값으로 볼 수 있다!
3. 런타임 에러
-
동적 할당을 하게 되면 n=1 처럼 최소케이스에서, memo[3] 접근시 에러가 날 수도 있음!!
⇒ 최소 케이스 예외처리를 해 주자
-
자바에서 객체 배열을 선언해놓고 student.y = Integer.parseInt(st.nextToken()); 이렇게 하면 오류!
- 파일 입출력은 지웠는지!!
계속 업데이트 됩니다!
'알고리즘 > 시험 팁' 카테고리의 다른 글
나무재테크로 알아보는 Map 자료구조 (0) | 2020.06.03 |
---|
댓글