PassBiBle.Net
°ê»ÚIT»{µý¥N¦ÒÊI
²Ê^ Site-Map
¥N¦Ò­º­¶ ¥N¦Òɲ®æ ¥N¦Ò¬yµ{ «HÅAµûɲ µý®Ñ¬d¸ß ÃD®w¤U¸ü ¥N¦Ò½×¾Â Ãö¤_§Ú­Ì ¥[¤J¦¬ÂÃ
CCNA ±MÃD MCSE ±MÃD ORACLE ±MÃD CISCO»{µý MICROSOFT LPI»{µý CIW»{µý SUN»{µý IBM»{µý
¥N ¦Ò Áp ¨t
Mail:
PassBiBle PassBiBle.Com
Msn :
PassBiBle HotMail.Com
QQ : 6411019
³Ì ·s ¤å ³¹
¡EJava¾Ç²ß¸ô®|¡Ð¤u¨ã½g
¡EJava¾Ç²ß¸ô®|¡Ð¹Lµ{½g+®ÑÄy½g
¡EJava¾Ç²ß¸ô®|¡Ð¤èªk½g+¸ê·½½g
¡E¾Ç²ßJavaªº30­Ó°ò¥»·§©À
¡E¨C©P·s®Ñ±À¯ò:IBM & Java
¡EJSP³Ì·s¯S©Ê¤Î«ä·Qªº³Ì¨Î¹ê½î
¡E¶}µoJ2EEÀ³¥ÎÀ³¿í´`ªº¤LÂI­ì
¡EJava¤¤ªº´ú¤£­ã­ì²z
¡E¼öªù°ÝÃD:java.exe¥X¿ù¿ù»~¤À
¡EJava»y¨¥¯SÂI¤Î¶}µo¤u¨ãJDK
¼ö ªù ¤å ³¹
¡EJava¦Ò¸Õ¸gÅç½Í
¡Ejava¤Jªù¾Ç²ß«ü¾É¤§³Ì¨Î¤è¦V
¡ESun»{µýJavaµ{§Ç­û
¡EJavaªº«e¥@¤µ¥Í
¡E³q¦Vµ{§Ç­ûªº¿ï¾Ü¡ÐSCJP»{µý
¡ESun»{µýJava¶}µo­û¡ÐSCJD»{µý
¡EJAVA»{µý¦Ò¸Õɲ®æ¤Î»{µýµý®Ñ
¡E¯Bļ¡Ð§A¤£À³¬OJavaµ{§Ç­ûªº
¡E³n¥ó¶}µo¦¨¥\12ªk«h
¡E¸Ó¾ÇJava©Î.NET¡H

¦³®Ä©M¥¿ÚÌ©w¸qhashCode()©Mequals()

¦³®Ä©M¥¿ÚÌ©w¸qhashCode()©Mequals()

¡@¡@ ¯Å§O¡G¤Jªù¯Å

¡@¡@ Brian Goetz (brian@quiotix.com)
¡@¡@ Quiotix Corp­º®uÅU°Ý
¡@¡@ 2003 ¦~ 8 ¤ë

¡@¡@ ¨C­ÓJava¹ï¶H³£¦³hashCode()©M equals()¤èªk¡C³\¦hÃþ©¿²¤¡]Override)³o¨Ç¤èªkªº¯Ê¬Ù¹ê¬I,¥H¦b¹ï¶H¹ê¨Ò¤§¶¡´£¨Ñ§ó²`¼h¦¸ªº»y¸q¥i¤ñ©Ê¡C¦bJava²z©À©M¹ê½î³o¤@³¡¤À¡AJava¶}µo¤H­ûBrian Goetz¦V±z¤¶²Ð¦b³Ð«ØJavaÃþ¥H¦³®Ä©M­ãÚÌ©w¸qhashCode()©Mequals()®ÉÀ³¿í´`ªº³W«h©M«ü«n¡C±z¥i¥H¦b°Q½×½×¾ÂÉO§@ªÌ©M¨ä¥¦ÅªªÌ¤@¦P±´°Q±z¹ï¥»¤åªº¬Ýªk¡C(±zÁÙ¥i¥HÂIÀ»¥»¤å³»³¡©Î©³³¡ªº°Q½×¶i¤J½×¾Â¡C)

¡@¡@ ÁöµMJava»y¨¥¤£ª½±µ¤ä«ùÃöÁp¼Æ²Õ -- ¥i¥H¨Ï¥Î¥ô¦ó¹ï¶H§@¬°¤@­Ó¯Á¤Þªº¼Æ²Õ -- ¦ý¦b®ÚObjectÃþ¤¤¨Ï¥ÎhashCode()¤èªk©úÚ̪í¥Ü´Á±æ¼sªx¨Ï¥ÎHashMap(¤Î¨ä«e½úHashtable)¡C²z·Q±¡ªp¤U°ò¤_´²¦Cªº®e¾¹´£¨Ñ¦³®Ä´¡¤J©M¦³®ÄÀ˯Á¡Fª½±µ¦b¹ï¶H¼Ò¦¡¤¤¤ä«ù´²¦C¥i¥H«P¶i°ò¤_´²¦Cªº®e¾¹ªº¶}µo©M¨Ï¥Î¡C

©w¸q¹ï¶Hªº¬Ûµ¥©Ê

¡@¡@ ObjectÃþ¦³¨âÏú¤èªk¨Ó±ÀÂ_¹ï¶Hªº¼ÐÃÑ¡Gequals()©MhashCode() ¡C¤@¯ë¨Ó»¡¡A¦pªG±z©¿²¤¤F¨ä¤¤¤@Ïú¡A±z¥²¶·¦P®É©¿²¤³o¨âÏú¡A¦]¬°¨âªÌ¤§¶¡¦³¥²¶·ºû«ùªº¦ÜÃö­«­nªºÃö¨t¡C¯S®í±¡ªp¬O®ÚÕuequals() ¤èªk¡A¦pªG¨â­Ó¹ï¶H¬O¬Ûµ¥ªº¡A¥¦­Ì¥²¶·¦³¬Û¦PªºhashCode()­È(ºÉºÞ³o³q±`¤£¬O¯uªº)¡C

¡@¡@ ¯S©wÃþªºequals()ªº»y¸q¦bImplementerªº¥ª°¼©w¸q¡F©w¸q¹ï¯S©wÃþ¨Ó»¡equals()·N¨ýµÛ¤°¤\¬O¨ä³]­p¤u§@ªº¤@³¡¤À¡CObject´£¨Ñªº¯Ê¬Ù¹ê¬I²³æ¤Þ¥Î¤U­±µ¥¦¡¡G

¡@¡@ public boolean equals(Object obj) { return (this == obj); }

¡@¡@ ¦b³oÏú¯Ê¬Ù¹ê¬I±¡ªp¤U¡A¥u¦³¥¦­Ì¤Þ¥Î¯u¥¿¦P¤@­Ó¹ï¶H®É³o¨â­Ó¤Þ¥Î¤~¬O¬Ûµ¥ªº¡C¦P¼Ë¡AObject´£¨ÑªºhashCode()ªº¯Ê¬Ù¹ê¬I³q¹L±N¹ï¶Hªº¤º¦s¦a§}¹ï¬M¤_¤@­Ó¾ã¼Æ­È¨Ó¥Í¦¨¡C¥Ñ¤_¦b¬Y¨Ç¬[ÌÛ¤W¡A¦a§}ªÅ¶¡¤j¤_int­Èªº­S³ò¡A¨â­Ó¤£¦Pªº¹ï¶H¦³¬Û¦PªºhashCode()¬O¥i¯àªº¡C¦pªG±z©¿²¤¤FhashCode()¡A±z¤´ÂÂ¥i¥H¨Ï¥ÎSystem.identityHashCode()¤èªk¨Ó±µ¤J³oÃþ¯Ê¬Ù­È¡C

©¿²¤ equals() -- ²³æ¹ê¨Ò

¡@¡@ ¯Ê¬Ù±¡ªp¤U¡Aequals()©MhashCode()°ò¤_¼ÐÃѪº¹ê¬I¬O¦X²zªº¡A¦ý¹ï¤_¬Y¨ÇÃþ¨Ó»¡¡A¥¦­Ì§Æ±æ©ñ¼eµ¥¦¡ªº©w¸q¡C¨Ò¦p¡AIntegerÃþ©w¸qequals() ÉO¤U­±Ãþ¦ü¡G

¡@¡@ public boolean equals(Object obj) {
¡@¡@ return (obj instanceof Integer
¡@¡@ && intValue() == ((Integer) obj).intValue());
¡@¡@ }

¡@¡@ ¦b³o­Ó©w¸q¤¤¡A¥u¦³¦b¥]§t¬Û¦Pªº¾ã¼Æ­Èªº±¡ªp¤U³o¨â­ÓInteger¹ï¶H¬O¬Ûµ¥ªº¡Cµ²¦X±N¤£¥i­×§ïªºInteger¡A³o¨Ï±o¨Ï¥ÎInteger§@¬°HashMap¤¤ªºÃöÁä¦r¬O¤Á¹ê¥i¦æªº¡C³oÏú°ò¤_­ÈªºEqual¤èªk¥i¥H¥ÑJavaÃþ®w¤¤ªº©Ò¦³­ì©l«Ê¸ËÃþ¨Ï¥Î¡A¦pInteger¡BFloat¡BCharacter©MBoolean¥H¤ÎString(¦pªG¨â­ÓString¹ï¶H¥]§t¬Û¦P¶¶§Çªº¦r²Å¡A¨º¥¦­Ì¬O¬Ûµ¥ªº)¡C¥Ñ¤_³o¨ÇÃþ³£¬O¤£¥i­×§ïªº¦}¥B¥i¥H¹ê¬IhashCode()©Mequals()¡A¥¦­Ì³£¥i¥H°µ¬°«Ü¦nªº´²¦CÃöÁä¦r¡C

¬°¤°¤\©¿²¤ equals()©MhashCode()?

¡@¡@ ¦pªGInteger¤£©¿²¤equals() ©M hashCode()±¡ªp¤S±N¦p¦ó?¦pªG§Ú­Ì±q¥¼¦bHashMap©Î¨ä¥¦°ò¤_´²¦Cªº¶°¦X¤¤¨Ï¥ÎInteger§@¬°ÃöÁä¦rªº¸Ü¡A¤°¤\¤]¤£·|µo¥Í¡C¦ý¬O¡A¦pªG§Ú­Ì¦bHashMap¤¤¨Ï¥Î³oÃþInteger¹ï¶H§@¬°ÃöÁä¦r¡A§Ú­Ì±N¤£¯à°÷¥i¾a¦aÀ˯Á¬ÛÃöªº­È¡A°£«D§Ú­Ì¦bget()½Õ¥Î¤¤¨Ï¥ÎÉOput()½Õ¥Î¤¤Ìå¨äÃþ¦üªºInteger¹ê¨Ò¡C³o­n¨DÚÌ«O¦b§Ú­Ìªº¾ã­Óµ{§Ç¤¤¡A¥u¯à¨Ï¥Î¹ïÀ³¤_¯S©w¾ã¼Æ­ÈªºInteger¹ï¶Hªº¤@­Ó¹ê¨Ò¡C¤£¥Î»¡¡A³oÏú¤èªkÌ夣¤è«K¦Ó¥B¿ù»~ÀWÀW¡C

¡@¡@ Objectªºinterface contract­n¨D¦pªG®ÚÕu equals()¨â­Ó¹ï¶H¬O¬Ûµ¥ªº¡A¨º¤\¥¦­Ì¥²¶·¦³¬Û¦PªºhashCode()­È¡C·í¨äÃѧO¯à¤O¾ã­Ó¥]§t¦bequals()¤¤®É¡A¬°¤°¤\§Ú­Ìªº®Ú¹ï¶HÃþ»Ý­nhashCode()¡HhashCode()¤èªk¯Âºé¥Î¤_´£°ª®Ä²v¡CJava¥­¥x³]­p¤H­û¹w­p¨ì¤F¨å«¬JavaÀ³¥Îµ{§Ç¤¤°ò¤_´²¦Cªº¶°¦XÃþ¡]Collection Class)ªº­«­n©Ê--¦pHashtable¡BHashMap©MHashSet¡A¦}¥B¨Ï¥Îequals()ÉO³\¦h¹ï¶H¶i¦æ¤ñ¸û¦b­pºâ¤è­±«D±`©ù¶Q¡C¨Ï©Ò¦³Java¹ï¶H³£¯à°÷¤ä«ù hashCode()¦}µ²¦X¨Ï¥Î°ò¤_´²¦Cªº¶°¦X¡A¥i¥H¹ê²{¦³®Äªº¦sÀx©MÀ˯Á¡C

¹ê¬Iequals()©MhashCode()ªº»Ý¨D

¡@¡@ ¹ê¬Iequals()©M hashCode()¦³¤@¨Ç­­¨î¡AObject¤å¥ó¤¤¦CÁ|¥X¤F³o¨Ç­­¨î¡C¯S§O¬Oequals()¤èªk¥²¶·Åã¥Ü¥H¤UÄݩʡG

¡@¡@ Symmetry¡G¨â­Ó¤Þ¥Î¡Aa©M b,a.equals(b) if and only if b.equals(a)
¡@¡@ Reflexivity¡G©Ò¦³«DªÅ¤Þ¥Î¡A a.equals(a)
¡@¡@ Transitivity¡GIf a.equals(b) and b.equals(c), then a.equals(c)
¡@¡@ Consistency with hashCode()¡G¨â­Ó¬Ûµ¥ªº¹ï¶H¥²¶·¦³¬Û¦PªºhashCode()­È

¡@¡@ Objectªº³W­S¤¤¦}¨S¦³©úÚÌ­n¨Dequals()©M hashCode() ¥²¶·¤@­P -- ¥¦­Ìªºµ²ªG¦bÀH¦Zªº½Õ¥Î¤¤±N¬O¬Û¦Pªº¡A°²³]¡§¤£§ïÅܹï¶H¬Ûµ¥ ©Ê¤ñ¸û¤¤¨Ï¥Îªº¥ô¦ó«H®§¡C¡¨³o§v°_¨Ó¶H¡§­pºâªºµ²ªG±N¤£§ïÅÜ¡A°£«D¹ê»Ú±¡ªp¦p¦¹¡C¡¨³o¤@¼Ò½kÁn©ú³q±`¸ÑÄÀ¬°¬Ûµ¥©Ê©M´²¦C­È­pºâÀ³¬O¹ï¶Hªº¥iÚÌ©w©Ê¥\¯à¡A¦Ó¤£¬O¨ä¥¦¡C

¹ï¶H¬Ûµ¥©Ê·N¨ýµÛ¤°¤\¡H

¡@¡@ ¤H­Ì«Ü®e©öº¡¨¬ObjectÃþ³W­S¹ïequals() ©M hashCode() ªº­n¨D¡C¨M©w¬O§_©M¦p¦ó©¿²¤equals()°£¤F§PÂ_¥H¥~¡AÁÙ­n¨D¨ä¥¦¡C¦b²³æªº¤£¥i­×­ÈÃþ¤¤¡A¦pInteger(¨Æ¹ê¤W¬O¤L¥G©Ò¦³¤£¥i­×§ïªºÃþ)¡A¿ï¾Ü¬Û·í©úÅã -- ¬Ûµ¥©ÊÀ³°ò¤_°ò¥»¹ï¶Hª¬ºAªº¬Ûµ¥©Ê¡C¦bInteger±¡ªp¤U¡A¹ï¶Hªº°ß¤@ª¬ºA¬O°ò¥»ªº¾ã¼Æ­È¡C

¡@¡@ ¹ï¤_¥i­×§ï¹ï¶H¨Ó»¡¡Aµª®×¦}¤£Á`¬O¦p¦¹²M·¡¡Cequals() ©MhashCode() ¬O§_À³°ò¤_¹ï¶Hªº¼ÐÃÑ(¶H¯Ê¬Ù¹ê¬I)©Î¹ï¶Hªºª¬ºA(¶HInteger©MString)¡H¨S¦³Â²³æªºµª®× -- ¥¦¨ú¨M¤_Ãþªº­p¦E¨Ï¥Î¡C¹ï¤_¶HList©MMap³o¼Ëªº®e¾¹¨Ó»¡¡A¤H­Ì¹ï¦¹ª§½×¤£¤w¡CJavaÃþ®w¤¤ªº¤j¦h¼ÆÃþ¡A¥]¬A®e¾¹Ãþ¡A¿ù»~¥X²{¦b®ÚÕu¹ï¶Hª¬ºA¨Ó´£¨Ñequals()©MhashCode()¹ê¬I¡C

¡@¡@ ¦pªG¹ï¶HªºhashCode()­È¥i¥H°ò¤_¨äª¬ºA¶i¦æ§ó§ï¡A¨º¤\·í¨Ï¥Î³oÃþ¹ï¶H§@¬°°ò¤_´²¦Cªº¶°¦X¤¤ªºÃöÁä¦r®É§Ú­Ì¥²¶·ª`·N¡AÚÌ«O·í¥¦­Ì¥Î¤_§@¬°´²¦CÃöÁä¦r®É¡A§Ú­Ì¦}¤£¤¹³\§ó§ï¥¦­Ìªºª¬ºA¡C©Ò¦³°ò¤_´²¦Cªº¶°¦X°²³]¡A·í¹ï¶Hªº´² ¦C­È¥Î¤_§@¬°¶°¦X¤¤ªºÃöÁä¦r®É¥¦¤£·|§ïÅÜ¡C¦pªG·íÃöÁä¦r¦b¶°¦X¤¤®É¥¦ªº´²¦C¥N½X³Q§ó§ï¡A¨º¤\±N²£¥Í¤@¨Ç¤£¥i¹w´ú©M®e©ö²V²cªºµ²ªG¡C¹ê½î¹Lµ{¤¤³o³q±`¤£¬O°ÝÃD -- §Ú­Ì¦}¤£¸g±`¨Ï¥Î¶HList³o¼Ëªº¥i­×§ï¹ï¶H°µ¬°HashMap¤¤ªºÃöÁä¦r¡C

¡@¡@ ¤@­Ó²³æªº¥i­×§ïÃþªº¨Ò¤l¬OPoint¡A¥¦®ÚÕuª¬ºA¨Ó©w¸qequals()©MhashCode()¡C¦pªG¨â­ÓPoint ¹ï¶H¤Þ¥Î¬Û¦Pªº(x, y)®y¼Ð¡APointªº´²¦C­È¨Ó·½¤_x©My®y¼Ð­ÈªºIEEE 754-bitªí¥Ü¡A¨º¤\¥¦­Ì¬O¬Ûµ¥ªº¡C

¡@¡@ ¹ï¤_¤ñ¸ûÎ`ÂøªºÃþ¨Ó»¡¡Aequals()©MhashCode()ªº¦æ¬°¥i¯à¬Æ¦Ü¨ü¨ìsuperclass©Îinterfaceªº¼vÅT¡C¨Ò¦p¡AList±µ¤f­n¨D¦pªG¦}¥B¥u¦³¥t¤@­Ó¹ï¶H¬OList¡A¦Ó¥B¥¦­Ì¦³¬Û¦P¶¶§Çªº¬Û¦PªºElements(¥ÑElement¤WªºObject.equals() ©w¸q)¡AList¹ï¶Hµ¥¤_¥t¤@­Ó¹ï¶H¡ChashCode()ªº»Ý¨D§ó¯S®í--listªºhashCode()­È¥²¶·²Å¦X¥H¤U­pºâ¡G

¡@¡@ hashCode = 1;
¡@¡@ Iterator i = list.iterator();
¡@¡@ while (i.hasNext()) {
¡@¡@ Object obj = i.next();
¡@¡@ hashCode = 31*hashCode + (obj==null ? 0 : obj.hashCode());
¡@¡@ }

¡@¡@ ¤£¶È¶È´²¦C­È¨ú¨M¤_listªº¤º®e¡A¦Ó¥BÁÙ³W©w¤Fµ²¦X¦U­ÓElementªº´²¦C­Èªº¯S®íºâªk¡C(StringÃþ³W©wÃþ¦ü ªººâªk¥Î¤_­pºâStringªº´²¦C­È¡C)

½s¼g¦Û¤vªºequals()©MhashCode()¤èªk

¡@¡@ ©¿²¤¯Ê¬Ùªºequals()¤èªk¤ñ¸û²³æ¡A¦ý¦pªG¤£¹H¤Ï¹ïºÙ¡]Symmetry¡^©Î¶Ç»¼©Ê¡]Transitivity¡^»Ý¨D¡A©¿²¤¤w¸g©¿²¤ªºequals() ¤èªkÌå¨ä´Æ¤â¡C·í©¿²¤equals()®É¡A±zÀ³¸ÓÁ`¬O¦bequals()¤¤¥]¬A¤@¨ÇJavadocª`ÄÀ¡A¥HÀ°§U¨º¨Ç§Æ±æ¯à°÷¥¿ÚÌÂX®i±zªºÃþªº¥Î¤á¡C

¡@¡@ §@¬°¤@­Ó²³æªº¨Ò¤l¡A¦Ò¼{¥H¤UÃþ¡G

¡@¡@ class A {
¡@¡@ final B someNonNullField;
¡@¡@ C someOtherField;
¡@¡@ int someNonStateField;
¡@¡@ }

¡@¡@ §Ú­ÌÀ³¦p¦ó½s¼g¸ÓÃþªºequals()ªº¤èªk¡H³oÏú¤èªkÓì¥Î¤_³\¦h±¡ªp¡G

¡@¡@ public boolean equals(Object other) {
¡@¡@ // Not strictly necessary, but often a good optimization
¡@¡@ if (this == other)
¡@¡@ return true;
¡@¡@ if (!(other instanceof A))
¡@¡@ return false;
¡@¡@ A otherA = (A) other;
¡@¡@ return
¡@¡@ (someNonNullField.equals(otherA.someNonNullField))
¡@¡@ && ((someOtherField == null)
¡@¡@ ? otherA.someOtherField == null
¡@¡@ : someOtherFie ld.equals(otherA.someOtherField)));
¡@¡@ }

¡@¡@ ²{¦b§Ú­Ì©w¸q¤Fequals()¡A§Ú­Ì¥²¶·¥H²Î¤@ªº¤èªk¨Ó©w¸qhashCode()¡C¤@Ïú²Î¤@¦ý¦}¤£Á`¬O¦³®Äªº©w¸qhashCode()ªº¤èªk¦p¤U¡G

¡@¡@ public int hashCode() { return 0; }

¡@¡@ ³oÏú¤èªk±N¥Í¦¨¤j¶qªº±ø¥Ø¦}ÅãµÛ­°§CHashMapsªº©Ê¯à¡A¦ý¥¦²Å¦X³W­S¡C¤@­Ó§ó¦X²zªºhashCode()¹ê¬IÀ³¸Ó¬O³o¼Ë¡G

¡@¡@ public int hashCode() {
¡@¡@ int hash = 1;
¡@¡@ hash = hash * 31 + someNonNullField.hashCode();
¡@¡@ hash = hash * 31
¡@¡@ + (someOtherField == null ? 0 : someOtherField.hashCode());
¡@¡@ return hash;
¡@¡@ }

¡@¡@ ª`·N¡G³o¨âÏú¹ê¬I³£­°§C¤FÃþª¬ºA¦r¬qªºequals()©ÎhashCode()¤èªk¤@©w¤ñ¨Òªº­pºâ¯à¤O¡C®ÚÕu±z¨Ï¥ÎªºÃþ¡A±z¥i¯à§Æ±æ­°§Csuperclassªºequals()©ÎhashCode()¥\¯à¤@³¡¤À­pºâ¯à¤O¡C¹ï¤_­ì©l¦r¬q¨Ó»¡¡A¦b¬ÛÃöªº«Ê¸ËÃþ¤¤¦³helper¥\¯à¡A¥i¥HÀ°§U³Ð«Ø´²¦C­È¡A¦pFloat.floatToIntBits¡C

¡@¡@ ½s¼g¤@­Ó§¹¬üªºequals()¤èªk¬O¤£²{¹êªº¡C³q±`¡A·íÂX®i¤@­Ó¦Û¨­©¿²¤¤Fequals()ªºinstantiableÃþ®É¡A©¿²¤equals()¬O¤£¤Á¹ê»Úªº¡A¦Ó¥B½s¼g±N³Q©¿²¤ªºequals()¤èªk(¦p¦b©â¶HÃþ¤¤ )¤£¦P¤_¬°¨ãÊ^Ãþ½s¼gequals()¤èªk¡CÃö¤_¹ê¨Ò¥H¤Î»¡©úªº§ó¸Ô²Ó«H®§½Ð°Ñ¾\Effective Java Programming Language Guide, Item 7 (°Ñ¦Ò¸ê®Æ) ¡C

¦³«Ý§ï¶i?

¡@¡@ ±N´²¦CªkÌ۫بìJavaÃþ®wªº®Ú¹ï¶HÃþ¤¤¬O¤@Ïú«D±`©ú´¼ªº³]­p§é°J¤èªk -- ¥¦¨Ï¨Ï¥Î°ò¤_´²¦Cªº®e¾¹Åܱo¦p¦¹Â²³æ©M°ª®Ä¡C¦ý¬O¡A¤H­Ì¹ïJavaÃþ®w¤¤ªº´²¦Cºâªk©M¹ï¶H¬Ûµ¥©Êªº¤èªk©M¹ê¬I´£¥X¤F³\¦h§åµû¡Cjava.util¤¤°ò¤_´²¦Cªº®e¾¹«D±`¤è«K©M²«K©ö¥Î¡A¦ý¥i¯à¤£Óì¥Î¤_»Ý­n«D±`°ª©Ê¯àªºÀ³¥Îµ{§Ç¡CÁöµM¨ä¤¤¤j³¡¤À±N¤£·|§ïÅÜ¡A¦ý·í±z³]­pÄY­«¨Ì¿à¤_°ò¤_´²¦Cªº®e¾¹®Ä²vªºÀ³¥Îµ{§Ç®É¥²¶·¦Ò¼{³o¨Ç¦]¯À¡A¥¦­Ì¥]¬A¡G

¡@¡@ ¤Ó¤pªº´²¦C­S³ò¡C¨Ï¥Îint¦Ó¤£¬Olong§@¬°hashCode()ªºªð¦^Ãþ«¬¼W¥[¤F´²¦C½Ä¬ðªº¤L²v¡C

¡@¡@ ÁV¿|ªº´²¦C­È¤À°t¡Cµustrings©M¤p«¬integersªº´²¦C­È¬O¥¦­Ì¦Û¤vªº¤p¾ã¼Æ¡A±µªñ¤_¨ä¥¦¡§¾Fªñ¡¨¹ï¶Hªº´²¦C­È¡C¤@­Ó´`³W¾É¯x¡]Well-behaved¡^ªº´²¦C¨ç¼Æ±N¦b¸Ó´²¦C­S³ò¤º§ó§¡¤Ã¦a¤À°t´²¦C­È¡C

¡@¡@ µL©w¸qªº´²¦C¾Þ§@¡CÁöµM¬Y¨ÇÃþ¡A¦pString©MList¡A©w¸q¤F±N¨äElementªº´²¦C­Èµ²¦X¨ì¤@­Ó´²¦C­È¤¤¨Ï¥Îªº´²¦Cºâªk¡A¦ý»y¨¥³W­S¤£©w¸q±N¦h­Ó¹ï¶Hªº´²¦C­Èµ²¦X¨ì·s´²¦C­È¤¤ªº¥ô¦ó§å­ãªº¤èªk¡C§Ú­Ì¦b «e­±½s¼g¦Û¤vªºequals()©MhashCode()¤èªk¤¤°Q½×ªºList¡BString©Î¹ê¨ÒÃþA¨Ï¥Îªº³Z¬³£«Ü²³æ¡A¦ýºâ³N¤WÁÙ»·»·¤£°÷§¹¬ü¡CÃþ®w¤£´£¨Ñ¥ô¦ó´²¦Cºâªkªº¤è«K¹ê¬I¡A¥¦¥i¥H²¤Æ§ó¥ý¶iªºhashCode()¹ê¬Iªº³Ð«Ø¡C

¡@¡@ ·íÂX®i¤w¸g©¿²¤¤Fequals()ªº instantiableÃþ®É«ÜÃø½s¼gequals()¡C·íÂX®i¤w¸g©¿²¤¤Fequals()ªº instantiableÃþ®É¡A©w¸qequals()ªº¡§Åã¦Ó©ö¨£ªº¡¨¤è¦¡³£¤£¯àº¡¨¬equals()¤èªkªº¹ïºÙ©Î¶Ç»¼©Ê»Ý¨D¡C³o·N¨ýµÛ·í©¿²¤equals()®É¡A±z¥²¶·¤F¸Ñ±z¥¿¦bÂX®iªºÃþªºµ²ÌÛ©M¹ê¬I¸Ô²Ó«H®§¡A¬Æ¦Ü»Ý­n¼ÉÅS°ò¥»Ãþ¤¤ªºÉó±K¦r¬q¡A¥¦¹H¤Ï¤F­±¦V¹ï¶Hªº³]­pªº­ì«h¡C

µ²§ô»y

¡@¡@ ³q¹L²Î¤@©w¸qequals()©MhashCode()¡A±z¥i¥H´£¤ÉÃþ§@¬°°ò¤_´²¦Cªº¶°¦X¤¤ªºÃöÁä¦rªº¨Ï¥Î©Ê¡C¦³¨âÏú¤èªk¨Ó©w¸q¹ï¶Hªº¬Ûµ¥©Ê©M´²¦C­È¡G°ò¤_¼ÐÃÑ¡A¥¦¬OObject´£¨Ñªº¯Ê¬Ù¤èªk¡F°ò¤_ª¬ºA¡A¥¦­n¨D©¿²¤equals()©MhashCode()¡C·í¹ï¶Hªºª¬ºA§ó§ï®É¦pªG¹ï¶Hªº´²¦C­Èµo¥ÍÅܤơAÚÌ«H·íª¬ºA§@¬°´²¦CÃöÁä¦r¨Ï¥Î®É±z¤£¤¹³\§ó§ó§ï¨äª¬ºA¡C



Copyright? 2002-2005 Powered By PassBiBle.Com°êÈÒIT»{µý¥N¦ÒÊI ª©Åv©Ò¦³