JavaTM 2 Platform
Standard Ed. 5.0

java.util
ÀÎÅÍÆäÀ̽º Comparator<T>

±âÁ¸ÀÇ ±¸Çö Ŭ·¡½ºÀÇ À϶÷:
Collator, RuleBasedCollator

public interface Comparator<T>

¿ÀºêÁ§Æ®ÀÇ Ä÷º¼ÇÀ¸·Î ¡¸Àüü ¼ø¼­ ºÙÀÌ°í¡¹¸¦ ½Ç½ÃÇÏ´Â ºñ±³ ÇÔ¼öÀÔ´Ï´Ù. ÄÞÆÛ·¹ÀÌÅÍ (Comparator)¸¦ ¼ÒÆ® ¸Þ¼­µå (Collections.sort µî)¿¡ °Ç³×ÁÖ¸é, ¼ÒÆ®¼ø¼­¸¦ Á¤È®ÇÏ°Ô Á¦¾îÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶Ç, ÄÞÆÛ·¹ÀÌÅ͸¦ »ç¿ëÇϸé,TreeSet ¶Ç´Â TreeMap ¶ó°í ÇÏ´Â µ¥ÀÌÅÍ ±¸Á¶ÀÇ ¼ø¼­¸¦ Á¦¾îÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÄÞÆÛ·¹ÀÌÅÍ c °¡ ¿ä¼Ò¼¼Æ® S ·Î ½Ç½ÃÇÏ´Â ¼ø¼­ºÎ´Â S ¸ðµç e1 ¹× e2 ¿¡ ´ëÇØ (compare((Object) e1, (Object) e2)==0) °¡ e1.equals((Object) e2) ¿Í °°Àº boolean Ä¡¸¦ °¡Áö´Â °æ¿ì¿¡¸¸ equals ¿ÍÀÇ Àϰü¼ºÀÌ ÀÖ°Ô µË´Ï´Ù.

¼ÒÆ® ¼¼Æ® (¶Ç´Â ¼ÒÆ® ¸Ê)¸¦ ¼ø¼­ ºÙÀ̰í Çϱâ À§Çؼ­, equals ¿Í Àϰü¼ºÀÌ ¾ø´Â ¼ø¼­ºÎ¸¦ ½Ç½ÃÇÒ ¼ö°¡ ÀÖ´Â ÄÞÆÛ·¹ÀÌÅ͸¦ »ç¿ëÇÏ´Â °æ¿ì¿¡´Â ÁÖÀǰ¡ ÇÊ¿äÇÕ´Ï´Ù. ¸í½ÃÀûÀÎ ÄÞÆÛ·¹ÀÌÅÍ c¸¦ °¡Áö´Â ¼ÒÆ® ¼¼Æ® (¶Ç´Â ¼ÒÆ® ¸Ê)°¡ ¼¼Æ® S ·ÎºÎÅÍÀÇ ¿ä¼Ò (¶Ç´Â Ű)¿Í ÇÔ²² »ç¿ëµÇ¸é °¡Á¤ÇÕ´Ï´Ù. c ¿¡ ÇØ S ¿¡ ºÎ°úµÇ´Â ¼ø¼­ºÎ°¡ equals ¿Í Àϰü¼ºÀÌ ¾ø´Â °æ¿ì, ¼ÒÆ® ¼¼Æ® (¶Ç´Â ¼ÒÆ® ¸Ê)ÀÇ µ¿ÀÛÀº ÀÌ»óÇÏ°Ô µË´Ï´Ù. ƯÈ÷, ¼ÒÆ® ¼¼Æ® (¶Ç´Â ¼ÒÆ® ¸Ê)´Â equals ·Î Á¤Àǵǰí ÀÖ´Â ¼¼Æ® (¶Ç´Â ¸Ê)ÀÇ ÀÏ¹Ý ±Ô¾à¿¡ À§¹ÝÇÕ´Ï´Ù.

¿¹¸¦ µé¾î,(a.equals((Object) b) && c.compare((Object) a, (Object) b) ! = 0) ÀÎ 2 °³ÀÇ Å° a ¿Í b¸¦ ÄÞÆÛ·¹ÀÌÅÍ c¸¦ °¡Áö´Â ¼ÒÆ® ¼¼Æ®¿¡ Ãß°¡ÇÏ´Â °æ¿ì, 2 ¹øÂ°ÀÇ add ¿ÀÆÛ·¹À̼ÇÀº false¸¦ µ¹·ÁÁÖ°í, ¼ÒÆ® ¼¼Æ®ÀÇ »çÀÌÁî´Â Áõ°¡ÇÏÁö ¾Ê½À´Ï´Ù. À̰ÍÀº,a ¿Í b °¡ ¼ÒÆ® ¼¼Æ®ÀÇ °üÁ¡¿¡¼­´Â µ¿µîÇϱ⠶§¹®¿¡ÀÔ´Ï´Ù.

ÁÖ: ÀϹÝÀûÀ¸·Î ÄÞÆÛ·¹ÀÌÅÍ·Î java.io.Serializable¸¦ ±¸ÇöÇØ ÁÖ¼¼¿ä. ±× ÀÌÀ¯´Â ÄÞÆÛ·¹ÀÌÅ͸¦ Á÷·ÄÈ­ °¡´É µ¥ÀÌÅÍ ±¸Á¶ (TreeSet,TreeMap µî) ¾È¿¡¼­ ¼ø¼­ºÎ ¸Þ¼­µå·Î¼­ »ç¿ëÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù. µ¥ÀÌÅÍ ±¸Á¶ÀÇ Á÷·ÄÈ­¸¦ ¼º°ø½Ã۱â À§Çؼ­´Â ÄÞÆÛ·¹ÀÌÅÍ (Á¦°øµÇ´Â °æ¿ì)´Â Serializable¸¦ ±¸ÇöÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.

¼öÇÐÀûÀ¸·Î´Â ÁöÁ¤µÈ ÄÞÆÛ·¹ÀÌÅÍ c °¡ ÁöÁ¤µÈ ¿ÀºêÁ§Æ®¼¼Æ® S ¿¡ ºÎ°úÇÏ´Â ¡¸Àüü ¼ø¼­¡¹¸¦ Á¤ÀÇÇÏ´Â °ü°è´Â ´ÙÀ½°ú °°ÀÌ µË´Ï´Ù.

 {(x, y) such that c.compare((Object) x, (Object) y) <= 0}
ÀÌ Àüü ¼ø¼­ÀÇ ¡¸»ó¡¹Àº ´ÙÀ½°ú °°½À´Ï´Ù.
 {(x, y) such that c.compare((Object) x, (Object) y) == 0}
compare ±Ô¾àÀ¸·ÎºÎÅÍ, »óÀÌ S ¿¡¼­ÀÇ ¡¸µî°¡ °ü°è¡¹À̸ç, ÀÚ¿¬ ¼ø¼­ºÎ°¡ S ¿¡¼­ÀÇ ¡¸Àüü ¼ø¼­¡¹ÀÎ °ÍÀº ºÐ¸íÇÕ´Ï´Ù. c °¡ S ·Î ½Ç½ÃÇÏ´Â ¼ø¼­ºÎ°¡ ¡¸equals ¿ÍÀÇ Àϰü¼º¡¹ÀÌ ÀÖ´Ù°í ÇÏ´Â °æ¿ì, ±×°ÍÀº ÀÚ¿¬ ¼ø¼­ºÎÀÇ »óÀÌ ¿ÀºêÁ§Æ®ÀÇ equals(Object) ¸Þ¼­µå·Î Á¤ÀÇµÈ µî°¡ °ü°èÀÎ °ÍÀ» ¹ÌÇÕ´Ï´Ù.
 {(x, y) such that x.equals((Object) y)} 

ÀÌ ÀÎÅÍÆäÀ̽º´Â Java Collections Framework ¸â¹öÀÔ´Ï´Ù.

µµÀÔµÈ ¹öÁ¯:
1.2
°ü·Ã Ç׸ñ:
Comparable, Arrays.sort(Object[], Comparator), TreeMap, TreeSet, SortedMap, SortedSet, Serializable

¸Þ¼­µå °³¿ä
 int compare (T  o1, T  o2)
          ¼ø¼­ºÎ¸¦ À§Çؼ­ 2 °³ÀÇ Àμö¸¦ ºñ±³ÇÕ´Ï´Ù.
 boolean equals (Object  obj)
          ´Ù¸¥ ¿ÀºêÁ§Æ®°¡ ÀÌ ÄÞÆÛ·¹ÀÌÅÍ¿Í ¡¸µ¿ÀÏÇÏ´Ù¡¹È­µµÀÎÁö¸¦ ³ªÅ¸³À´Ï´Ù.
 

¸Þ¼­µåÀÇ »ó¼¼

compare

int compare(T  o1,
            T  o2)
¼ø¼­ºÎ¸¦ À§Çؼ­ 2 °³ÀÇ Àμö¸¦ ºñ±³ÇÕ´Ï´Ù. ÃÖÃÊÀÇ Àμö°¡ 2 ¹øÂ°ÀÇ Àμöº¸´Ù ÀÛÀº °æ¿ì´Â ºÎÀÇ Á¤¼ö, ¾çÂÊ ¸ðµÎ°¡ µ¿ÀÏÇÑ °æ¿ì´Â 0, ÃÖÃÊÀÇ Àμö°¡ 2 ¹øÂ°ÀÇ Àμöº¸´Ù Å« °æ¿ì´Â Á¤ÀÇ Á¤¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù.

±¸ÇöÀº, ¸ðµç x ¹× y ·Î sgn(compare(x, y)) == -sgn(compare(y, x))¸¦ º¸ÁõÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. À̰ÍÀº,compare(y, x) °¡ ¿¹¿Ü¸¦ Throw ÇÏ´Â °æ¿ì¿¡¸¸ compare(x, y) °¡ ¿¹¿Ü¸¦ Throw ÇÏ´Â °ÍÀ» ¹ÌÇÕ´Ï´Ù.

¶Ç, ±¸ÇöÀÚ´Â ÀÌ °ü°è¿¡ ÃßÀ̼ºÀ» °®°ÔÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. Áï,((compare(x, y) >0) && (compare(y, z) >0))´Â compare(x, z) >0¸¦ ¹ÌÇÕ´Ï´Ù.

¸¶Áö¸·À¸·Î ±¸ÇöÀÚ´Â compare(x, y)==0 °¡ ¸ðµç z ·Î sgn(compare(x, z)) ==sgn(compare(y, z))¸¦ ¹ÌÇϵµ·Ï ÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.

(compare(x, y)==0) == (x.equals(y))´Â ¾ö¹ÐÇϰԴ ¡¸¿ä±¸µÇÁö ¾Ê½À´Ï´Ù¡¹. ÀϹÝÀûÀ¸·Î ÀÌ Á¶°Ç¿¡ À§¹ÝÇÏ´Â ÄÞÆÛ·¹ÀÌÅÍ¿¡¼­´Â ÀÌ »ç½ÇÀÌ ¸íÈ®ÇÏ°Ô ³ªÅ¸³¯ Çʿ䰡 ÀÖ½À´Ï´Ù. ¡¸ÁÖ: ÀÌ ÄÞÆÛ·¹ÀÌÅÍ´Â equals ¿Í Àϰü¼ºÀÌ ¾ø´Â ¼ø¼­ºÎ¸¦ ºÎ°úÇÕ´Ï´Ù.¡¹(¿Í)°ú °°ÀÌ °¡¸®ÄÑ ÁÖ¼¼¿ä.

ÆÄ¶ó¹ÌÅÍ:
o1 - ºñ±³ ´ë»óÀÇ ÃÖÃÊÀÇ ¿ÀºêÁ§Æ®
o2 - ºñ±³ ´ë»óÀÇ 2 ¹øÂ°ÀÇ ¿ÀºêÁ§Æ®
¹Ýȯ°ª:
ÃÖÃÊÀÇ Àμö°¡ 2 ¹øÂ°ÀÇ Àμöº¸´Ù ÀÛÀº °æ¿ì´Â ºÎÀÇ Á¤¼ö, ¾çÂÊ ¸ðµÎ°¡ µ¿ÀÏÇÑ °æ¿ì´Â 0, ÃÖÃÊÀÇ Àμö°¡ 2 ¹øÂ°ÀÇ Àμöº¸´Ù Å« °æ¿ì´Â Á¤ÀÇ Á¤¼ö
¿¹¿Ü:
ClassCastException - ÀμöÀÇ ÇüŰ¡ ÀÌ ÄÞÆÛ·¹ÀÌÅÍ¿¡ ÇÑ ºñ±³¸¦ ¹æÇØÇÏ´Â °æ¿ì

equals

boolean equals(Object  obj)
´Ù¸¥ ¿ÀºêÁ§Æ®°¡ ÀÌ ÄÞÆÛ·¹ÀÌÅÍ¿Í ¡¸µ¿ÀÏÇÏ´Ù¡¹È­µµÀÎÁö¸¦ ³ªÅ¸³À´Ï´Ù. ÀÌ ¸Þ¼­µå´Â Object.equals(Object) ÀÏ¹Ý ±Ô¾à¿¡ µû¸¦ Çʿ䰡 ÀÖ½À´Ï´Ù. ¶Ç, ÀÌ ¸Þ¼­µå´Â ÁöÁ¤µÈ Object µµ ÄÞÆÛ·¹ÀÌÅÍÀ̸ç, ±×°ÍÀÌ ÀÌ ÄÞÆÛ·¹ÀÌÅÍ¿Í °°Àº ¼ø¼­ºÎ¸¦ ½Ç½ÃÇÏ´Â °æ¿ì¿¡¸¸ true¸¦ µ¹·ÁÁÙ ¼ö°¡ ÀÖ½À´Ï´Ù. µû¶ó¼­,comp1.equals(comp2)´Â ¸ðµç ¿ÀºêÁ§Æ® ÂüÁ¶ o1 ¹× o2 ·Î sgn(comp1.compare(o1, o2)) ==sgn(comp2.compare(o1, o2))¸¦ ¹ÌÇÕ´Ï´Ù.

º¸Åë ,Object.equals(Object)´Â º¯°æÇÏÁö ¾Ê´Â ÆíÀÌ ¾ÈÀüÇÕ´Ï´Ù. ´Ù¸¸, ÀÌ ¸Þ¼­µå¸¦ º¯°æÇØ, 2 °³ÀÇ °³º°ÀÇ ÄÞÆÛ·¹ÀÌÅͰ¡ °°Àº ¼ø¼­ºÎ¸¦ ½Ç½ÃÇÏ´Â °ÍÀ» ÇÁ·Î±×·¥ÀÌ ÆÇ´ÜÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â °ÍÀ¸·Î ÆÛÆ÷¸Õ½º°¡ Çâ»óÇÏ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù.

¿À¹ö¶óÀ̵å(override):
Ŭ·¡½º Object ³»ÀÇ equals
ÆÄ¶ó¹ÌÅÍ:
obj - ºñ±³ ´ë»óÀÇ ÂüÁ¶ ¿ÀºêÁ§Æ®
¹Ýȯ°ª:
ÁöÁ¤µÈ ¿ÀºêÁ§Æ®µµ ÄÞÆÛ·¹ÀÌÅÍÀ̸ç, ±×°ÍÀÌ ÀÌ ÄÞÆÛ·¹ÀÌÅÍ¿Í °°Àº ¼ø¼­ºÎ¸¦ ½Ç½ÃÇÏ´Â °æ¿ì¿¡¸¸ true
°ü·Ã Ç׸ñ:
Object.equals(java.lang.Object), Object.hashCode()

JavaTM 2 Platform
Standard Ed. 5.0

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy µµ ÂüÁ¶ÇϽʽÿÀ.