ITEM 14: Consider implementing comparable
Comparable
μ λ¨μ λμΉμ± λΉκ΅μ μμ λΉκ΅λ₯Ό ν μ μλ Generic μΈν°νμ΄μ€μ΄λ€. Comparable
μ ꡬνν ν΄λμ€μ μΈμ€ν΄μ€μλ μμ°μ μΈ μμκ° μμμ λ»νλ©°, Comparable
μ ꡬνν κ°μ²΄λ€μ λ°°μ΄μ λ€μκ³Ό κ°μ΄ μ½κ² μ λ ¬ν μ μλ€.
μ¬μ€μ μλ° νλ«νΌ λΌμ΄λΈλ¬λ¦¬μ λͺ¨λ κ° ν΄λμ€μ μ΄κ±°νμ
μ΄ Comparable
μ ꡬννμΌλ©°, μνλ²³, μ«μ, μ°λ κ°μ΄ μμκ° λͺ
νν κ° ν΄λμ€λ₯Ό μμ±νλ€λ©΄ Comparable
μΈν°νμ΄μ€λ₯Ό ꡬννλ κ²μ΄ μ’λ€.
compareTo λ©μλ μΌλ° κ·μ½
sgn
μ signum functionμ λ»νκ³ , ννμμ κ°μ΄ μμ, 0, μμμΌ λ -1, 0, 1μ λ°ννλλ‘ μ μ
sgn(x.compareTo(y)) == -sgn(y.compareTo(x))
x.compareTo(y) > 0 && y.compareTo(z) > 0
μ΄λ©΄x.compareTo(z) > 0
μ΄λ€.x.compareTo(y) == 0
μ΄λ©΄sgn(x.compareTo(z)) == sgn(y.compareTo(z))
μ΄λ€.(x.compareTo(y) == 0 ) == (x.equals(y))
μ¬μΌνλ€. (μ΄ κΆκ³ λ νμλ μλμ§λ§ κΌ μ§ν€λκ² μ’μΌλ©°, λ§μ½ μ§ν€μ§ μμλ€λ©΄ μ΄ ν΄λμ€μ μμλequals
λ©μλμ μΌκ΄λμ§ μλ λ€λ κ²μ λͺ μν΄μΌνλ€.)
compareTo
κ·μ½μ μ§ν€μ§ λͺ»νλ©΄ λΉκ΅λ₯Ό νμ©νλ ν΄λμ€(TreeSet
, TreeMap
, Collections
, Arrays
)λ₯Ό νμ©νμ§ λͺ»νλ€.
4λ² κ·μ½μ μ§ν€μ§ μμ μ¦, compareTo
μ equals
μ κ²°κ³Όκ° μΌκ΄λμ§ μμ κ²½μ°μλ μ΄ ν΄λμ€μ κ°μ²΄λ₯Ό μ λ ¬λ 컬λ μ
μμ μλμΉ μμ λμμ ν μ μλ€.
HashSet
μ equals
λ©μλλ‘ λΉκ΅λ₯Ό νκΈ°λλ¬Έμ HashSet
μ μμλ 2κ°μ΄κ³ , TreeSet
μ compareTo
λ©μλλ‘ λΉκ΅νκΈ° λλ¬Έμ μμμ κ°μλ 1κ°μ΄λ€.
Comparable
μ νμ
μ μΈμλ‘ λ°λ μ λ€λ¦ μΈν°νμ΄μ€λ‘, compareTo
λ©μλμ μΈμ νμ
μ μ»΄νμΌνμμ μ ν΄μ§λ€. μΈμ νμ
μμ²΄κ° μλͺ»λλ€λ©΄, μ»΄νμΌ μμ²΄κ° λμ§ μμΌλ©°, nullμ μΈμλ‘ λ£μ΄ νΈμΆνλ€λ©΄ NullPointerExeption
μ΄ λ°μν κ²μ΄λ€. compareTo
λ κ° νλκ° λμΉμΈμ§ λΉκ΅νλ κ²μ΄ μλ μμλ₯Ό λΉκ΅νλ€.
compareTo
λ©μλμμ κ΄κ³ μ°μ°μ <
μ >
λ₯Ό μ¬μ©νλ λ°©μμ μΆμ²νμ§ μμΌλ©°, μλ°7λΆν° λ°μ±λ κΈ°λ³Έ νμ
ν΄λμ€λ€μ μλ‘ μΆκ°λ compare
μ μ΄μ©νλ©΄ λλ€.
ν΄λμ€μ ν΅μ¬ νλκ° μ¬λ¬ κ°λΌλ©΄ κ°μ₯ ν΅μ¬μ μΈ νλλΆν° λΉκ΅ν΄μΌνλ€. λΉκ΅ κ²°κ³Όκ° 0μ΄ μλλΌλ©΄(μμκ° μ ν΄μ§λ€λ©΄) λ°ννλ©΄ λλ€.
μλ° 8μμλ Comparator
μΈν°νμ΄μ€λ₯Ό νμ©ν΄μ ꡬνν μ μλ€.
μ΄ λ°©μμ κ°κ²°νμ§λ§ ,μ½κ°μ μ±λ₯μ νκ° λ€λ°λ₯Έλ€. Comparator
λ μλ°μ μ«μμ© κΈ°λ³Έ νμ
μ λͺ¨λ 컀λ²ν μ μλ€.
λΉκ΅μ μ£Όμ μ¬ν
λ€μ λ°©μμ μ μ μ€λ²νλ‘μ°λ, λΆλμμμ κ³μ° λ°©μμ λ°λ₯Έ μ€λ₯λ₯Ό λΌ μ μμΌλ©°, μ±λ₯ λν μλ±ν λΉ λ₯΄μ§ μκΈ° λλ¬Έμ μ¬μ©νλ©΄ μλλ€. μλ λ λ°©μμ€ νλλ‘ κ΅¬ννλ κ²μ κΆμ₯νλ€.
μ μ compare λ©μλ νμ©
λΉκ΅μ μμ± λ©μλ νμ©
μ 리νμ§λ©΄ λ€μκ³Ό κ°λ€.
μμλ₯Ό κ³ λ €νλ κ° ν΄λμ€ μμ±μ
Comparable
μΈν°νμ΄μ€λ₯Ό ꡬνν΄ ν΄λΉ μΈμ€ν΄μ€λ₯Ό μ½κ² μ λ ¬, κ²μ, λΉκ΅ν μ μλ 컬λ μ κ³Ό μ΄μ°λ¬μ§λλ‘ ν΄μΌ νλ€.compareTo
λ©μλμμ νλ κ° λΉκ΅μ<
,>
μ°μ°μλ μ¬μ©νμ§ λ§μλ°μ±λ κΈ°λ³Έ νμ ν΄λμ€κ° μ 곡νλ μ μ
compare
λ©μλλCompartor
μΈν°νμ΄μ€κ° μ 곡νλ λΉκ΅μ μμ± λ©μλλ₯Ό μ¬μ©νμ.
Last updated
Was this helpful?