배열이나 Collection 프레임워크 등에서 sort() 를 사용하면 컴퓨터가 알아서 정렬을 해준다.
그 중 배열에서 sort()함수를 통해 정렬기능을 사용할 수 있다.
Arrays.sort()
여기서 사용되는 sort() 는 Comparable 구현에 의해 정렬된 것인데,
오름차순정렬이 디폴트이다.
내림차순 정렬로 수행하려면 이렇게 수행하면된다
Arrays.sort(str, Collections.reverseOrder());
아래서 정리할 건데 comparable or comparator 인터페이스를 사용하면된다
배열과 리스트의 정렬 시간복잡도 비교
따라서 Arrays.sort()를 사용하고자 할 때에는 시간복잡도에 유의해야한다
Comparable - 기본 정렬기준을 구현하는데 사용.
Comparator - 기본 정렬기준 외에 다른 기준으로 정렬하고자할 때 사용.
객체를 특정 조건에 따라 정렬하고자할때, 아님 내림차순으로 정렬하고자 할 때는 두가지 인터페이스 중 하나를 재구현하여 사용해야한다
스트링을 비교시에는 this.word.compareTo(o.word)
와 같이 리턴해줄 것!
this.word.compareTo(o.word)
는
현재 객체의 word 속성과 다른 객체 o의 word 속성을 비교하여
두 문자열이 같으면 0을 반환하고,
현재 객체의 word 속성이 다른 객체 o의 word 속성보다 크면 양수를 반환해서 바꾸고,
현재 객체의 word 속성이 다른 객체 o의 word 속성보다 작으면 음수를 반환해서 유지한다
따라서 이것은 오름차순 정렬을 의미하는 것을 알 수 있다.
오름 차순 정렬시 이런방법도 존재한다
@Override public int compareTo(Word o){ return this.word.compareTo(o.word) }
한편, Comparable을 implements 하지 않고도 오브젝트의 특정 변수를 기준으로 정렬하는 방법은 있다.
이 때 사용하는 방법이 Comparator 이다.
Arrays.sort(array, myComparator)
Collections.sort(list, myComparator)
메서드는 두 번째 인자로 Comparator interface를 받을 수 있다.
return o1.age-o2.age
if(o1.age>o2.age) return 1;
else if(o1.age<o2.age) return -1;
else return 0;
https://laugh4mile.tistory.com/175
https://gmlwjd9405.github.io/2018/09/06/java-comparable-and-comparator.html
https://devlog-wjdrbs96.tistory.com/68
https://cwondev.tistory.com/15