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 µµ ÂüÁ¶ÇϽʽÿÀ.