코딩 테스트에서 Comparable 이랑 Comparator 종종 쓰게 됬는데,
사실 정렬 목적으로 조물조물 개발 하다가 궁금해서 찾아봤다.
둘 다 인터페이스인데,
Comparable은 compareTo(T o)
Comparator는 compare(T o1, T o2)
를 구현하는 방식으로 사용한다.
객체 비교할 때 사용하게 되는데, Comparator는 두 매개변수 객체를 비교할 수 있고,
Comparable은 자기 자신과 매개변수를 비교할 수 있게 한다.
따라서 Comparator는 그냥 파라미터로 들어오는 두 객체를 비교하는 것이고,
Comparable은 내 자신과 + 파라미터로 들어오는 객체를 비교하는 것이다.
그러니까 a.compareTo(b) 같이 쓰던거는 Comparable이고
Comparator는 a.compare(b,c)해도 그냥 b랑 c 비교하는 것이라는 것...★
만약에 a 랑 c 비교하려면 a.compare(a,c) 이렇게 해야 한다.
이거 둘 다 codility인가 어디에서 계속 인수 범위 때문에 오류 나서
작은 스트레스 받았었는데 (작은 이유 : 버리고 다른 걸로 구현해서 해결함)
정리된 사이트에도 기재가 되어 있어서 좋은 세상이다...★
Underflow 랑 Overflow 오류에 대한 것도 주의할 것
: 음수로 인식되는 오버플로우와 반대로 음수를 양수로 만들어서 나는 오류인 언더플로우...
끔찍!
보통 Comparator같은 경우에는 익명 객체를 하나 맨들어서 쓰는데
내 구현 방식이 헤드퍼스트에서 배운 거랑 똑같은걸 보니 주입의 무서움이 있는 것이다...
(그냥 예로부터 내려온 방식이라고 생각했음... 주입식 교육의 우수함(?))
잘 정리한 곳 : https://st-lab.tistory.com/243
이거 사용해서 구현하는 과제도 있었는데,
답글삭제코딩 테스트 외에 뭔가... 내부 로직을 조금 보여주면서 진행하는 것이 수상해서 검색을 해 본 결과가 무료로 프리랜서 한 것이라는 결론에 도달했다.
따라서 과제물 주는 곳은 더이상 진행 하지 않기로 결정함...
코딩 테스트의 단계를 올리는 것은 이해하나 과제물이 아닌 무료 기능 개발이라는 생각이 듬... (전부 그렇다는 것은 아닌데 저번 주 내내 한 과제가 좀 그랬습니다.)
블라인드에서 관련 내역 찾아서 영 기분이 안 좋지만 힘내는 하루의 시작...
CS 지식 자체를 요구하는 것은 이해가 되는데, 실질적으로 구현한 경험과 결과물이 실제 운영하는 사이트에 올라가 있는데도 코테, 기술면접 후 과제를 추가로 요구해서 조금 이상해하고 있었으나... 검색 결과에 상위권에 뜨는군요... (-.-)
답글삭제면접 관련 게시물은 아니나 ... 혹시나 보시게 된다면 조심하십시오...
(수정)검색 결과의 상위권에 뜨는군요
삭제