Comparator

정렬알고리즘

정렬 알고리즘을 풀 때 Collections.sort 메소드를 많이 쓴다. 이 메서드는 퀵 정렬을 기반으로 정렬해주므로 정렬시 아주 유용하게 사용한다. 하지만 Collections.sort만으로 해결할 수 없는 정렬들이 있다. ex) 2개의 원소가 쌍으로 되어있어 차레롤 정렬해야 하는 경우. 정렬 기준이 2가지 이상일 경우

이런 특수한 경우에 사용하는 메서드가 Comparator다.

**Comparator - 기본 정렬기준 외에 다른 기준으로 정렬하고자할 때 사용. **

하나의 예쩨로 백준 11650번을 할 때 사용했다. x,y 한쌍으로 구성된 좌표들이 주어진다. 먼저 x값을 오름차순으로 정렬 후 같은 값이 있을 경우 y값의 오름차순으로 정렬한다.

2가지 이상의 기준이므로 Comparator을 사용하여 기준 정의를 해야한다.

		Collections.sort(num, new Comparator<XY>(){
			@Override
			public int compare(XY o1, XY o2){
				if(o1.x>o2.x){
					return 1;
				}else if(o1.x<o2.x){
					return -1;
				}
				else{
					if ( o1.y > o2.y ){
						return 1;
	                }
	                else if (o1.y < o2.y ){
	                    return -1;
	                }
	                else {
	                    return 0;
	                }
				}
			}
		});