¼òµ¥»Ø¹ËJava»ù±¾¸ÅÄî
ÔÝʱÕâÑùÀí½â£¬Ï£Íû´ó¼ÒÖ¸³öÎҵĴíÎó
1.hashcode and equals:
equalsÈç¹ûÓÃÀ´ÅжÏÁ½¸ö¶ÔÏóµÄÄÚÈÝÊÇ·ñÏàͬ£¬ÐèÒªÖØÐ´£¬ÒòΪequals() ĬÈÏÊDZȽÏÁ½¸ö¶ÔÏóµÄÒýÓá£
hashCode() ÊÇÓÃÀ´²úÉú¹þÏ£ÂêµÄ£¬¶ø¹þÏ£ÂêÊÇÓÃÀ´ÔÚÉ¢Áд洢½á¹¹ÖÐÈ·¶¨¶ÔÏóµÄ´æ´¢µØÖ·µÄ£¬Ïóutil°üÖÐµÄ ´ø hash µÄ¼¯ºÏÀà¶¼ÊÇÓÃÕâÖÖ´æ´¢½á¹¹ £ºHashMap,HashSet, ËûÃÇÔÚ½«¶ÔÏó´æ´¢Ê±£¨Ñϸñ˵ÊǶÔÏóÒýÓã©£¬ÐèҪȷ¶¨ËûÃǵĵØÖ·°É£¬¶øHashCode()¾ÍÊÇÕâ¸öÓÃ;µÄ£¬Ò»°ã¶¼ÐèÒªÖØÐ¶¨ÒåËüµÄ£¬ÒòΪĬÈÏÇé¿öÏ£¬ÓÉ Object ÀඨÒåµÄ hashCode ·½·¨»áÕë¶Ô²»Í¬µÄ¶ÔÏ󷵻ز»Í¬µÄÕûÊý£¬ÕâÒ»°ãÊÇͨ¹ý½«¸Ã¶ÔÏóµÄÄÚ²¿µØÖ·×ª»»³ÉÒ»¸öÕûÊýÀ´ÊµÏֵģ¬ÏÖÔÚ¾Ù¸öÀý×ÓÀ´Ëµ£¬ ¾ÍÄÃHashSetÀ´Ëµ£¬ÔÚ½«¶ÔÏó´æÈëÆäÖÐʱ£¬Í¨¹ý±»´æÈë¶ÔÏóµÄ hashCode() À´È·¶¨¶ÔÏóÔÚ HashSet ÖеĴ洢µØÖ·£¬Í¨¹ýequals()À´È·¶¨´æÈëµÄ¶ÔÏóÊÇ·ñÖØ¸´£¬hashCode() £¬equals()¶¼ÐèÒª×Ô¼ºÖØÐ¶¨Ò壬ÒòΪhashCode()ĬÈÏÇ°ÃæÒѾ˵À²£¬¶øequals() ĬÈÏÊDZȽϵĶÔÏóÒýÓã¬ÄãÏÖÔÚÏëһϣ¬Èç¹ûÄã²»¶¨Òåequals()µÄ»°£¬ÄÇôͬһ¸öÀà²úÉúµÄÁ½¸öÄÚÈÝÍêÈ«ÏàͬµÄ¶ÔÏ󶼿ÉÒÔ´æÈëSet£¬ÒòΪËûÃÇÊÇͨ¹ý equals()À´È·¶¨µÄ£¬ÕâÑù¾ÍʹµÃHashSet ʧȥÁËËûµÄÒâÒå¡£
¿´Ò»ÏÂÏÂÃæÕâ¸ö£º
public class Test {
public static void main(String[] args) {
HashSet set = new HashSet();
for (int i = 0; i <= 3; i++){
set.add(new Demo1(i,i));
}
System.out.println(set);
set.add(new Demo1(1,1));
System.out.println(set);
System.out.println(set.contains(new Demo1(0,0)));
System.out.println(set.add(new Demo1(1,1)));
System.out.println(set.add(new Demo1(4,4)));
System.out.println(set);
}
private static class Demo1 {
private int value;
private int id;
public Demo1(int value,int id) {
this.value = value;
this.id=id;
}
public String toString() {
return " value = " + value;
}
public boolean equals(Object o) {
Demo1 a = (Demo1) o;
return (a.value == value) ? true : false;
}
public int hashCode() {
return id;
}
}
}
½á¹û£º
[ value = 2, value = 1, value = 3, value = 0]
[ value = 2, value = 1, value = 3, value = 0]
true
false
true
[ value = 2, value = 4, value = 1, value = 3, value =
Ïà¹ØÎĵµ£º
8ÖÖ»ù±¾Êý¾ÝÀàÐÍÓÐÏàÓ¦µÄ8ÖÖ°ü×°Àà(Wrapper)¶ÔÓ¦,·Ö±ðÊÇ:Character,Byte,Short,Integer,Long,Float,Double,Boolean.
ÌØµã:
1.ÌṩÁËvalueOf(String)ÓÃÓÚ´Ó×Ö·û´®×ª»»¼°toString()ת»»³É×Ö·û´®
2.ͨ¹ýxxxxValue()·½·¨¿ÉÒԵõ½Ëù°ü×°µÄÖµ,ÈçInteger¶ÔÏóµÄintValue()·½·¨.
ʾÀý´úÂë:
public class DoubleAndString {
pu ......
1, ±£Ö¤Ḭ̈߳²È«µÄÈýÖÖ·½·¨:
a, ²»Òª¿çÏ̷߳ÃÎʹ²Ïí±äÁ¿
b, ʹ¹²Ïí±äÁ¿ÊÇfinalÀàÐ͵Ä
c, ½«¹²Ïí±äÁ¿µÄ²Ù×÷¼ÓÉÏͬ²½
2, Ò»¿ªÊ¼¾Í½«ÀàÉè¼Æ³ÉḬ̈߳²È«µÄ, ±ÈÔÚºóÆÚÖØÐÂÐÞ¸´Ëü,¸üÈÝÒ×.
3, ±àд¶àÏ̳߳ÌÐò, Ê×Ïȱ£Ö¤Ë ......
Map map = new HashMap();
Iterator iter = map.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
Object key = entry.getKey();
Object val = entry.getValue();
}
......
ÖÚËùÖÜÖª£¬ÔÚ³ÌÐò¿ª·¢ÖУ¬ÄÑÃâ»áÓöµ½ÐèҪƥÅä¡¢²éÕÒ¡¢Ìæ»»¡¢ÅжÏ×Ö·û´®µÄÇé¿ö·¢Éú£¬¶øÕâЩÇé¿öÓÐʱÓֱȽϸ´ÔÓ£¬Èç¹ûÓô¿±àÂ뷽ʽ½â¾ö£¬ÍùÍù»áÀ˷ѳÌÐòÔ±µÄʱ¼ä¼°¾«Á¦¡£Òò´Ë£¬Ñ§Ï°¼°Ê¹ÓÃÕýÔò±í´ïʽ£¬±ã³ÉÁ˽â¾öÕâһì¶ÜµÄÖ÷ÒªÊֶΡ£
´ó¼Ò¶¼ÖªµÀ£¬ÕýÔò±í´ïʽÊÇÒ»ÖÖ¿ÉÒÔÓÃÓÚģʽƥÅäºÍÌæ»»µÄ¹æ·¶£¬Ò»¸öÕýÔò±í´ïʽ¾ÍÊÇÓÉ ......