[JAVA] Comparable vs Comparator

Comparable ๊ฐœ๋…


Comparable์ด๋ž€?

Comparable์€ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ปฌ๋ ‰์…˜์„ ์ •๋ ฌํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•˜๊ณ  ์žˆ์Œ
Comparable์„ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋Š” ํด๋ž˜์Šค๋Š” ๊ฐ™์€ ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค๋ผ๋ฆฌ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ž˜์Šค๋“ค์ž„ 
Comparable์„ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋“ค์€ ์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•จ 
ํ•„์ˆ˜์ ์œผ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋Š” CompareTo()

 

Comparator ๊ฐœ๋… 


Comparator๋ž€?

Comparable์ด ๊ฐ์ฒด๋ฅผ ์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•ด์ค€๋‹ค๋ฉด ์–˜๋Š” ์ •๋ ฌ ๊ธฐ์ค€์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ 
์ฆ‰, Comparable์—์„œ ๊ตฌํ˜„ํ•œ ๊ธฐ๋ณธ ์ •๋ ฌ๊ธฐ์ค€ ์™ธ์— ๋‹ค๋ฅธ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๊ณ ์žํ•  ๋•Œ ์‚ฌ์šฉํ•จ
Ex) ์ด๋ฏธ ๊ตฌํ˜„๋œ ์˜ค๋ฆ„์ฐจ์ˆœ์ด ์•„๋‹Œ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ

 

Comparable, Comparator์„ ์ด์šฉํ•œ Collection ์ •๋ ฌ


๋งŒ์•ฝ ๊ฒŒ์ž„์—์„œ ์œ ์ € ๋žญํ‚น์„ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์„๋•Œ ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?

  • ์œ ์ €์˜ ์ด๋ฆ„๊ณผ ์œ ์ €์˜ ๊ฒŒ์ž„ ์ ์ˆ˜๋ฅผ ํฌํ•จํ•˜๋Š” User ํด๋ž˜์Šค ์ƒ์„ฑ
  • ์œ ์ €์˜ ๊ฒŒ์ž„ ์ ์ˆ˜๋ณ„๋กœ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋„๋ก Comparable ๊ตฌํ˜„ 
  • ์˜ค๋ฆ„์ฐจ์ˆœ์ด ์•„๋‹Œ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ Comparator๋ฅผ ๊ตฌํ˜„ํ•œ Descending ํด๋ž˜์Šค ์ƒ์„ฑ