ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>97精品97,国产三级精品视频,中文在线三区http://www.aygfsteel.com/TimmyWang/王胖åçš„é»‘æ¿æŠ?/description>zh-cnSat, 21 Jun 2025 11:35:04 GMTSat, 21 Jun 2025 11:35:04 GMT60- Hashtableå’ŒHashMap引å‘的血æ¡?/title><link>http://www.aygfsteel.com/TimmyWang/archive/2011/02/27/345291.html</link><dc:creator>王胖å?/dc:creator><author>王胖å?/author><pubDate>Sun, 27 Feb 2011 11:47:00 GMT</pubDate><guid>http://www.aygfsteel.com/TimmyWang/archive/2011/02/27/345291.html</guid><wfw:comment>http://www.aygfsteel.com/TimmyWang/comments/345291.html</wfw:comment><comments>http://www.aygfsteel.com/TimmyWang/archive/2011/02/27/345291.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.aygfsteel.com/TimmyWang/comments/commentRss/345291.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/TimmyWang/services/trackbacks/345291.html</trackback:ping><description><![CDATA[<span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium Simsun; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><span style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px" class="Apple-style-span">
<p style="margin: 0px" class="MsoNormal"><em>人物åQ?/em></p>
<p style="text-indent: 21pt; margin: 0px" class="MsoNormal" mce_style="text-indent: 21.0pt;"><em>王å°èƒ–:性别åQšç”·ã€‚程åºå‘˜åQŒå·¥ä½œç»éª?/em><em>1 year</em><em>。爱好:åƒè‚‰ã€ç”µçŽ©ã€é©¬ž®èŠ±ã€‚ç‰¹æŠ€åQšåƒè‚‰ä¸ç”¨è€ƒè™‘胃的定w‡ã€?/em></p>
<p style="text-indent: 21pt; margin: 0px" class="MsoNormal" mce_style="text-indent: 21.0pt;"><em>马å°èŠ±ï¼šæ€§åˆ«åQšå¥³ã€‚å¦ç”Ÿï¼Œå·¥ä½œ¾l验</em><em>0 year</em><em>。爱好:蛋糕ã€è‡¾ŸŽã€çŽ‹ž®èƒ–。特技åQšèƒ½å¤Ÿé™æœçŽ‹ž®èƒ–……</em></p>
<p style="text-indent: 21pt; margin: 0px" class="MsoNormal" mce_style="text-indent: 21.0pt;"><em> </em></p>
<p style="text-indent: 21pt; margin: 0px" class="MsoNormal" mce_style="text-indent: 21.0pt;"><em>/**2011</em><em>òq?/em><em>2</em><em>月,电媄《将爱情˜q›è¡Œåˆ°åº•》ç«å¾—ä¸å¾—了。周末,ž®èƒ–也陪瀞®èбåŽÈœ‹˜q™éƒ¨ç”µåª„ã€‚æ”¾æ˜ ä¸åQŒå°èŠÞp¢«å½Þq‰‡ä¸çš„é–å“¥å“¥å’Œæœæ‹‰æ‹‰æ„ŸåŠ¨çš„ä¸€æ²“ç³Šæ¶‚ï¼Œè€Œå°èƒ–åˆ™å¿ƒé‡Œæš—è‡ªåŽæ‚”没有ä¹îC¸€è¢‹å¤§çˆ†ç±³èŠ±æ¥æ‰“员q™æ— èŠçš„æ—‰™—´ã€‚媄片结æŸï¼Œž®èŠ±å·²ç»æ˜¯éËE涕一把泪一把,ž®èƒ–ä¹Ÿåªæœ‰è£…æ¨¡ä½œæ ·åœ°æŠ½åŠ¨äº†å‡ ä¸‹éËEåï¼Œä¸€å¿ƒåªæƒ³ç€ä¸€ä¼šå„¿æ˜¯åƒéº¦å½“劌™¿˜æ˜¯å¿…胜客ã€?/em><em>*/</em></p>
<p style="text-indent: 21pt; margin: 0px" class="MsoNormal" mce_style="text-indent: 21.0pt;"><em>回到家ä¸åQŒå°èƒ–å’Œž®èбå„自玩ç€ç”µè„‘ã€?/em></p>
<p style="text-indent: 21pt; margin: 0px" class="MsoNormal" mce_style="text-indent: 21.0pt;"><em>ž®èбåQšèƒ–åï¼Œä½ çŸ¥é?/em><em>Hashtable</em><em>å’?/em><em>HashMap</em><em>的区别å—åQ?/em></p>
<p style="text-indent: 21pt; margin: 0px" class="MsoNormal" mce_style="text-indent: 21.0pt;"><em>ž®èƒ–åQšç•¥çŸ¥ã€?/em></p>
<p style="text-indent: 21pt; margin: 0px" class="MsoNormal" mce_style="text-indent: 21.0pt;"><em>ž®èбåQ?#8230;…装什么ï¼åQ给我讲è®ÔŒ¼åQï¼</em></p>
<p style="text-indent: 21pt; margin: 0px" class="MsoNormal" mce_style="text-indent: 21.0pt;"><em>ž®èƒ–åQšå¥½çš?#8230;…</em></p>
<p style="margin: 0px" class="MsoNormal"><strong>½W¬ä¸€ä¸ªåŒºåˆ«å°±å…ˆæ¥è¯´è¯´¾l§æ‰¿å…³ç³»å§ã€?/strong></p>
<p style="margin: 0px" class="MsoNormal"> å¦‚æžœä½ åœ¨baidu里googleä¸€ä¸‹ï¼ˆæŠ€æœ¯ç±»æ–‡ç« çš„æœç´¢è¿˜æ˜¯æŽ¨ègoogleåQ‰ï¼Œä¼šå‘现网上的大致说法ä¸?#8220;ç”׃ºŽJavaå‘展的历å²åŽŸå› ã€‚Hashtable是基于陈旧的Dictionary¾cÈš„åQŒHashMap是Java 1.2引进的Map接å£çš„一个实现ã€?#8221;相åŒã€‚è¿™¿U说法没有错åQŒä½†æ˜¯èƒ–å觉得ä¸å¤Ÿå‡†¼‹®ï¼Œç‰¹åˆ«æ˜¯å¯¹äºŽæˆ‘们这¿U大众èœé¸Ÿæ¥è¯ß_¼Œå¦‚æžœä¸åŽ»æ·Þq©¶çš„è¯åQŒå¯èƒ½å°±ä¼šé€ æˆä¸€äº›ç†è§£ä¸Šçš„差异。简å•çš„è®¤äØ“<span style="white-space: pre" mce_style="white-space: pre;">Hashtable</span>没有¾l§æ‰¿Map接å£ã€‚胖å之å‰å°±çŠ¯è¿‡˜q™æ ·çš„é”™è¯¯ï¼ˆèƒ–åæ‰¿è®¤è‡ªå·±½W¨ï¼Œæ˜¯çœŸ½W?#8230;…åQ?ã€?/p>
<p style="margin: 0px" class="MsoNormal"> <em>ž®èбåQšé‚£ä½ 怎么知é“它们两个å„自的ç‘ô承关¾pÕd‘¢åQŸèƒ–åã€?/em></p>
<p style="margin: 0px" class="MsoNormal">我们å¯ä»¥å‚考一下最新的JDK1.6çš„æºç ,看看˜q™ä¸¤ä¸ªç±»çš„定义:</p>
<p style="margin: 0px" class="MsoNormal"><br />
</p>
<pre style="border-bottom: rgb(204,204,204) 1px solid; border-left: rgb(204,204,204) 1px solid; padding-bottom: 3px; background-color: rgb(250,250,250); margin: 0px 5px 5px 15px; padding-left: 3px; padding-right: 3px; font-family: Verdana, Arial, Helvetica, sans-serif; color: rgb(0,0,0); font-size: 12px; border-top: rgb(204,204,204) 1px solid; border-right: rgb(204,204,204) 1px solid; padding-top: 3px; background-origin: initial; background-clip: initial" class="java" name="code">public class Hashtable<K,V>
extends Dictionary<K,V>
implements Map<K,V>, Cloneable, java.io.Serializable {…}
public class HashMap<K,V>
extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable {…}</pre>
<p style="margin: 0px"><br />
</p>
<p style="margin: 0px"><br />
</p>
<p style="margin: 0px" class="MsoNormal">å¯ä»¥çœ‹åˆ°hashtable也是¾l§æ‰¿äº†Map接å£ã€‚它们的ä¸åŒæ˜¯HashtableåQˆsince JDK1.0åQ‰å°±¾l§æ‰¿äº†Dictionary˜q™ä¸ªæŠ½è±¡¾c»ï¼Œè€ŒHashMapåQˆsince JDK1.2åQ‰ç‘ô承的则是AbstractMap˜q™ä¸ªæŠ½è±¡¾c…R€‚å› ä¸ºåœ¨Hashtableä¸çœ‹åˆ°ç‘ô承MapåŽæ‰€å®žçŽ°çš„æ–¹æ³•æ˜¯JDK1.2ç‰ˆæœ¬æ—¶åŠ ä¸ŠåŽ»çš„ï¼Œæ‰€ä»¥èƒ–å猜惛_¯èƒ½æ˜¯åœ¨JDK 1.2开呿—¶Sun工程师出于统一的考虑使得Hashtable也ç‘ô承了Map接å£ã€?/p>
<p style="margin: 0px" class="MsoNormal"> <em>ž®èбåQšå“¦åQŒåŽŸæ?/em><em>JDK</em><em>æºç ˜q˜èƒ½çœ‹å‡ºæ¥è¿™ä¸ªã€?/em></p>
<p style="margin: 0px" class="MsoNormal"><em> </em><em>ž®èƒ–åQ?#8230;…åŽé¢˜q˜èƒ½çœ‹å‡ºæ›´å¤šä¸œè¥¿çš„ã€?/em></p>
<p style="margin: 0px" class="MsoNormal"><em> </em><em>ž®èбåQšå¥½æœŸå¾…啊ã€?/em></p>
<p style="margin: 0px" class="MsoNormal"><br />
</p>
<p style="margin: 0px" class="MsoNormal"><strong>½W¬äºŒä¸ªåŒºåˆ«æˆ‘ä»¬ä»ŽåŒæ¥å’ŒåÆˆå‘æ€§ä¸Šæ¥è¯´è¯´å®ƒä»¬ä¸¤ä¸ªçš„ä¸åŒã€?/strong></p>
<p style="margin: 0px" class="MsoNormal"><br />
</p>
<p style="margin: 0px" class="MsoNormal">å¯ä»¥é€šè¿‡˜q™ä¸¤ä¸ªç±»å¾—æºç æ¥åˆ†æžåQŒHashtableä¸çš„ä¸»è¦æ–ÒŽ³•都åšäº†åŒæ¥å¤„ç†ï¼Œè€ŒHashMap则没有。å¯ä»¥è¯´Hashtable在默认情冉|”¯æŒåŒæ¥ï¼Œè€ŒHashMapåœ¨é»˜è®¤æƒ…å†µä¸‹æ˜¯ä¸æ”¯æŒçš„。我们在多线½E‹åƈå‘的环境下,å¯ä»¥ç›´æŽ¥ä½¿ç”¨HashtableåQŒä½†æ˜¯è¦ä½¿ç”¨HashMap的诞®Þp¦è‡ªå·±å¢žåŠ åŒæ¥å¤„ç†äº†ã€‚对HashMapçš„åŒæ¥å¤„ç†å¯ä»¥ä‹É用Collections¾cÀL供的synchronizedMap陿€æ–¹æ³•;或者直接ä‹É用JDK5.0ä¹‹åŽæä¾›çš„java.util.concurrent包里的ConcurrentHashMap¾c…R€?/p>
<p style="text-indent: 21pt; margin: 0px" class="MsoNormal" mce_style="text-indent: 21.0pt;"><em>ž®èƒ–åQ?/em><em>synchronizedMap</em><em>陿€æ–¹æ³•å’Œ</em><em>ConcurrentHashMap</em><em>¾cÀLˆ‘会以åŽå†¾l™ä½ 详细讲一下的。肥婆ã€?/em></p>
<p style="text-indent: 21pt; margin: 0px" class="MsoNormal" mce_style="text-indent: 21.0pt;"><em>ž®èбåQšä½ ä¿è¯å•Šã€‚é’¥åŒ™å¿˜äº†ä½ çŸ¥é“åŽæžœçš„ã€?/em></p>
<p style="text-indent: 21pt; margin: 0px" class="MsoNormal" mce_style="text-indent: 21.0pt;"><em>ž®èƒ–åQšå¥½çš?#8230;…</em></p>
<p style="text-indent: 21pt; margin: 0px" class="MsoNormal" mce_style="text-indent: 21.0pt;"><br />
</p>
<p style="text-indent: 21pt; margin: 0px" class="MsoNormal" mce_style="text-indent: 21.0pt;"><strong>½W¬ä¸‰ä¸ªåŒºåˆ«å°±æ˜¯å®ƒä»¬å¯¹äº?/strong><strong>null</strong><strong>å€¼çš„å¤„ç†æ–¹å¼äº†ã€?/strong></p>
<p style="text-indent: 21pt; margin: 0px" class="MsoNormal" mce_style="text-indent: 21pt;"><br />
</p>
<p style="text-indent: 21pt; margin: 0px" class="MsoNormal" mce_style="text-indent: 21.0pt;">我们ä¾ç„¶èƒ½å¤Ÿä»Žæºä»£ç ä¸å¾—知,Hashtableä¸ï¼Œkeyå’Œvalue都ä¸å…许出现null倹{€?/p>
<p style="text-indent: 21pt; margin: 0px" class="MsoNormal" mce_style="text-indent: 21.0pt;"><br />
</p>
<pre style="border-bottom: rgb(204,204,204) 1px solid; border-left: rgb(204,204,204) 1px solid; padding-bottom: 3px; background-color: rgb(250,250,250); margin: 0px 5px 5px 15px; padding-left: 3px; padding-right: 3px; font-family: Verdana, Arial, Helvetica, sans-serif; color: rgb(0,0,0); font-size: 12px; border-top: rgb(204,204,204) 1px solid; border-right: rgb(204,204,204) 1px solid; padding-top: 3px; background-origin: initial; background-clip: initial" class="java" name="code">public synchronized V put(K key, V value) {
// Make sure the value is not null
if (value == null) {
throw new NullPointerException();
}
// Makes sure the key is not already in the hashtable.
Entry tab[] = table;
int hash = key.hashCode();
int index = (hash & 0x7FFFFFFF) % tab.length;
//…
}</pre>
<p style="margin: 0px" class="MsoNormal">在我们ä‹É用上é¢çš„æ–ÒŽ³•æ—Óž¼Œå¦‚傿•°value为nullåQŒå¯ä»¥ä»Žä»£ç <span style="font-size: small" mce_style="font-size: small;">ä¸ç›´æŽ¥çœ‹å‡ºç¨‹åºä¼šæŠ›å‡ºNullPointerExceptionåQ›è€Œåœ¨key为nullæ—Óž¼Œåˆ™ä¼šåœ?#8220;int hash = key.hashCode();“˜q™æ®µè®¡ç®—Hash值的˜q‡ç¨‹ä¸æŠ›å‡ºNullPointerExceptionã€?/span>而在在HashMapä¸ï¼Œå…许nullä½œäØ“keyå˜åœ¨åQŒåƈ且和其他keyçš„ç‰¹æ€§ä¸€æ øP¼Œ˜q™æ ·çš„null值keyåªèƒ½æœ‰ä¸€ä¸ªï¼›å¦å¤–HashMapå…许多个value为nullã€‚è¿™æ ·å¤§å®¶å°±è¦æ³¨æ„了åQ?nbsp;HashMapä¸å°±ä¸èƒ½ç”¨get(key)æ–ÒŽ³•æ¥åˆ¤æ–HashMap䏿˜¯å¦å˜åœ¨æŸä¸ªkeyåQŒå› 为value为nullå’Œä¸å˜åœ¨è¯¥keyçš„Entry都会˜q”回nullå€û|¼Œè€Œåº”该用containsKey()æ–ÒŽ³•æ¥åˆ¤æ–了ã€?/p>
<p style="text-indent: 21pt; margin: 0px" class="MsoNormal" mce_style="text-indent: 21.0pt;"><br />
</p>
<pre style="border-bottom: rgb(204,204,204) 1px solid; border-left: rgb(204,204,204) 1px solid; padding-bottom: 3px; background-color: rgb(250,250,250); margin: 0px 5px 5px 15px; padding-left: 3px; padding-right: 3px; font-family: Verdana, Arial, Helvetica, sans-serif; color: rgb(0,0,0); font-size: 12px; border-top: rgb(204,204,204) 1px solid; border-right: rgb(204,204,204) 1px solid; padding-top: 3px; background-origin: initial; background-clip: initial" class="java" name="code">import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
public class TestCase {
public static void main(String[] args) {
Map<Integer,String> hashMap = new HashMap<Integer,String>();
hashMap.put(0, null);
hashMap.put(1, "one");
hashMap.put(2, "two");
hashMap.put(null, "null");
for(Entry<Integer, String> e : hashMap.entrySet()) {
System.out.println("Key: " + e.getKey() + " -- Value: " + e.getValue());
}
System.out.println(hashMap.get(0));
System.out.println(hashMap.get(4));
System.out.println("Contains key 0 ? :" + hashMap.containsKey(0));
System.out.println("Contains key 4 ? :" + hashMap.containsKey(4));
System.out.println("Contains value null ? :" + hashMap.containsValue(null));
}
}</pre>
<p style="margin: 0px"><span style="font-family: 'Courier New'; font-size: small" mce_style="font-family: 'Courier New'; font-size: small;"><span style="font-size: 13px" mce_style="font-size: 13px;"><span style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: small" mce_style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: small;"><span style="font-size: 12px" mce_style="font-size: 12px;">¾l“æžœåQ?/span></span></span></span></p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><br />
</p>
<pre style="border-bottom: rgb(204,204,204) 1px solid; border-left: rgb(204,204,204) 1px solid; padding-bottom: 3px; background-color: rgb(250,250,250); margin: 0px 5px 5px 15px; padding-left: 3px; padding-right: 3px; font-family: Verdana, Arial, Helvetica, sans-serif; color: rgb(0,0,0); font-size: 12px; border-top: rgb(204,204,204) 1px solid; border-right: rgb(204,204,204) 1px solid; padding-top: 3px; background-origin: initial; background-clip: initial" class="java" name="code">Key: null -- Value: null
Key: 0 -- Value: null
Key: 1 -- Value: one
Key: 2 -- Value: two
null
null
Contains key 0 ? :true
Contains key 4 ? :false
Contains value null ? :true</pre>
<p style="margin: 0px"><br />
</p>
<p style="margin: 0px" class="MsoNormal">HashMap对于null值key的处ç†ç½‘上有è¯?#8220;null 用new Object()æ¥ä»£æ›¿ï¼Œå…¶Entry.hashCode=0,而且在å–出的时候还会还回nullçš„ã€?#8221;èƒ–åæˆ‘在è¯Õd–æºç 的过½E‹ä¸çœ‹åˆ°äº†null值的hash值确实是0 åQˆå†…部实现的数组ä¸çš„index也是åQ‰ï¼Œä½†æ˜¯èƒ½åŠ›æœ‰é™æ²¡æœ‰çœ‹åˆ°è½¬äØ“new Object()的过½E‹ã€?/p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><em>ž®èбåQ?原æ¥</em><em>hashMap</em><em>çš?/em><em>containsKey</em><em>˜q˜æœ‰˜q™ä¹ˆä¸ªé™·é˜±ï¼Œä»¥åŽè‚¥å©†è¦å°å¿ƒäº†ã€?/em></p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><strong>½W¬å››ä¸ªä¸åŒå°±æ˜¯å®ƒä»¬ä¸¤ä¸?/strong><strong>Hash</strong><strong>å€¼çš„èŽ·å–æ–¹å¼äº†ã€?/strong></p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><br />
</p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;">˜q˜æ˜¯é€šè¿‡æºä»£ç æºä»£ç åQŒHashtable是直接ä‹É用key对象的hash倹{€?/p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><br />
</p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><br />
</p>
<pre style="border-bottom: rgb(204,204,204) 1px solid; border-left: rgb(204,204,204) 1px solid; padding-bottom: 3px; background-color: rgb(250,250,250); margin: 0px 5px 5px 15px; padding-left: 3px; padding-right: 3px; font-family: Verdana, Arial, Helvetica, sans-serif; color: rgb(0,0,0); font-size: 12px; border-top: rgb(204,204,204) 1px solid; border-right: rgb(204,204,204) 1px solid; padding-top: 3px; background-origin: initial; background-clip: initial" class="java" name="code">public synchronized V put(K key, V value) {
// Make sure the value is not null
if (value == null) {
throw new NullPointerException();
}
// Makes sure the key is not already in the hashtable.
Entry tab[] = table;
int hash = key.hashCode();//hashcode
int index = (hash & 0x7FFFFFFF) % tab.length;
//…
}</pre>
<p style="margin: 0px"><br />
</p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;">而HashMap则是利用key对象的hash值釿–°è®¡½Ž—一个新的hash倹{€?/p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><br />
</p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><br />
</p>
<pre style="border-bottom: rgb(204,204,204) 1px solid; border-left: rgb(204,204,204) 1px solid; padding-bottom: 3px; background-color: rgb(250,250,250); margin: 0px 5px 5px 15px; padding-left: 3px; padding-right: 3px; font-family: Verdana, Arial, Helvetica, sans-serif; color: rgb(0,0,0); font-size: 12px; border-top: rgb(204,204,204) 1px solid; border-right: rgb(204,204,204) 1px solid; padding-top: 3px; background-origin: initial; background-clip: initial" class="java" name="code">public V put(K key, V value) {
if (key == null)
return putForNullKey(value);
int hash = hash(key.hashCode());//hashcode
int i = indexFor(hash, table.length);
//…
}
static int hash(int h) {
h ^= (h >>> 20) ^ (h >>> 12);
return h ^ (h >>> 7) ^ (h >>> 4);
}</pre>
<p style="margin: 0px"><br />
</p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><em>ž®èбåQšèƒ–å,都用äº?/em><em>hash</em><em>½Ž—法åQŒä½ ¾l™æˆ‘讲讲</em><em>Hash</em><em>½Ž—法å§ã€?/em></p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><em>ž®èƒ–åQšå—¯……以åŽçš„,今天我比较忙åQˆå…¶å®žæ˜¯ä¸ä¼šåQ‰ã€?/em></p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><em>ž®èбåQšä½ æ˜¯ä¸æ˜¯ä¸ä¼šå•ŠåQŸå˜¿å˜¿ï¼ˆå笑åQ‰ã€?/em></p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><em>ž®èƒ–åQšä»€ä¹ˆä¸ä¼?#8230;…谈下一è¯é¢˜……</em></p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><em> </em></p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><strong>½W¬äº”个ä¸åŒå°±æ˜?/strong><strong>Hashtable</strong><strong>å’?/strong><strong>HashMap</strong><strong>它们两个内部实现方å¼çš„æ•°¾l„çš„åˆå§‹å¤§å°å’Œæ‰©å®¹çš„æ–¹å¼ã€?/strong></p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><br />
</p>
<p style="margin: 0px" class="MsoNormal">HashMapä¸å†…部数¾l„çš„åˆå§‹å®šw‡æ˜?6åQ?åŠ è²å› åä¸?.75åQŒè€Œä¸”数组定w‡å¢žå®¹åŽä¹Ÿè¦æ˜¯2指数‹Æ¡å¹‚åQ?/p>
<p style="margin: 0px" class="MsoNormal"><br />
</p>
<p style="margin: 0px" class="MsoNormal"><br />
</p>
<pre style="border-bottom: rgb(204,204,204) 1px solid; border-left: rgb(204,204,204) 1px solid; padding-bottom: 3px; background-color: rgb(250,250,250); margin: 0px 5px 5px 15px; padding-left: 3px; padding-right: 3px; font-family: Verdana, Arial, Helvetica, sans-serif; color: rgb(0,0,0); font-size: 12px; border-top: rgb(204,204,204) 1px solid; border-right: rgb(204,204,204) 1px solid; padding-top: 3px; background-origin: initial; background-clip: initial" class="java" name="code">/**
* The default initial capacity - MUST be a power of two.
*/
static final int DEFAULT_INITIAL_CAPACITY = 16;
/**
* The load factor used when none specified in constructor.
*/
static final float DEFAULT_LOAD_FACTOR = 0.75f;</pre>
<p style="margin: 0px"><br />
</p>
<p style="margin: 0px" class="MsoNormal">HashTableä¸çš„内部数组的åˆå§‹å®¹é‡æ˜¯11åQŒåŠ è½½å› å也æ˜?.75数组的增å®ÒŽ–¹å¼äØ“åQˆoldCapacity * 2 + 1åQ?</p>
<p style="margin: 0px" class="MsoNormal"><br />
</p>
<p style="margin: 0px" class="MsoNormal"><br />
</p>
<pre style="border-bottom: rgb(204,204,204) 1px solid; border-left: rgb(204,204,204) 1px solid; padding-bottom: 3px; background-color: rgb(250,250,250); margin: 0px 5px 5px 15px; padding-left: 3px; padding-right: 3px; font-family: Verdana, Arial, Helvetica, sans-serif; color: rgb(0,0,0); font-size: 12px; border-top: rgb(204,204,204) 1px solid; border-right: rgb(204,204,204) 1px solid; padding-top: 3px; background-origin: initial; background-clip: initial" class="java" name="code">public Hashtable() {
this(11, 0.75f);
}
protected void rehash() {
int oldCapacity = table.length;
Entry[] oldMap = table;
int newCapacity = oldCapacity * 2 + 1;
//…
}</pre>
<p style="margin: 0px"><br />
</p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><strong>½W¬å…个ä¸åŒæˆ‘们从它们两个é历方å¼çš„内部实çŽîC¸Šæ¥è¯´ã€?/strong></p>
<p style="margin: 0px" class="MsoNormal">Hashtable HashMap都ä‹É用了 Iterator。而由于历å²åŽŸå› ï¼ŒHashtable˜q˜ä‹É用了Enumeration的方å¼?ã€?/p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><em>ž®èбåQ?/em><em>Iterator</em><em>å’?/em><em>Enumeration</em><em>的区别是什么啊åQŸç»™æˆ‘讲讌Ӏ?/em></p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><em>ž®èƒ–åQšæˆ‘ä¸æ˜¯è¯´æˆ‘没有旉™—´å˜›ï¼Œä¸‹å›žçš„ã€?/em></p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><em>ž®èбåQšæˆ‘éƒ½è®°ä¸‹æ¥åQŒçœå¾—ä½ ¾l™æˆ‘æ·¯‚¿‡åŽ…R€‚(拿è“v½W”开始记账ä¸åQ?/em></p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><em>ž®èƒ–åQ?#8230;…åQˆç´§å¼ )</em></p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><strong>½W¬ä¸ƒä¸ªä¸åŒæ—¶å®ƒä»¬çš„æ‹·è´æž„é€ å‡½æ•°çš„ä¸åŒã€?/strong></p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><br />
</p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;">ä¾ç„¶æ˜¯é€šè¿‡æŸ¥çœ‹æºç åQŒå¯ä»¥å‘现它们两个对于拷è´å‡½æ•°åˆå§‹å®¹é‡çš„ä¸åŒå€¹{€?/p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;">HashMap的实现是åQ?/p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><br />
</p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><br />
</p>
<pre style="border-bottom: rgb(204,204,204) 1px solid; border-left: rgb(204,204,204) 1px solid; padding-bottom: 3px; background-color: rgb(250,250,250); margin: 0px 5px 5px 15px; padding-left: 3px; padding-right: 3px; font-family: Verdana, Arial, Helvetica, sans-serif; color: rgb(0,0,0); font-size: 12px; border-top: rgb(204,204,204) 1px solid; border-right: rgb(204,204,204) 1px solid; padding-top: 3px; background-origin: initial; background-clip: initial" class="java" name="code">public HashMap(Map<? extends K, ? extends V> m) {
this(Math.max((int) (m.size() / DEFAULT_LOAD_FACTOR) + 1,
DEFAULT_INITIAL_CAPACITY), DEFAULT_LOAD_FACTOR);
putAllForCreate(m);
}</pre>
<p style="margin: 0px"><br />
</p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;">而Hashtable的实现是åQ?/p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><br />
</p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><br />
</p>
<pre style="border-bottom: rgb(204,204,204) 1px solid; border-left: rgb(204,204,204) 1px solid; padding-bottom: 3px; background-color: rgb(250,250,250); margin: 0px 5px 5px 15px; padding-left: 3px; padding-right: 3px; font-family: Verdana, Arial, Helvetica, sans-serif; color: rgb(0,0,0); font-size: 12px; border-top: rgb(204,204,204) 1px solid; border-right: rgb(204,204,204) 1px solid; padding-top: 3px; background-origin: initial; background-clip: initial" class="java" name="code">public Hashtable(Map<? extends K, ? extends V> t) {
this(Math.max(2*t.size(), 11), 0.75f);
putAll(t);
}</pre>
<p style="margin: 0px"><br />
</p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><br />
</p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><em>ž®èƒ–åQšä»Šå¤©è®²çš„å·²¾l很多了。我有点饿了åQŒè‚¥å©†ã€?/em></p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><em>ž®èбåQšçœ‹ä½ 今天的表现˜q™ä¹ˆå¥½ã€‚èµ°åQŒå¸¦ä½ 去åƒçƒ¤è‚‰åŽ»ã€?/em></p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><em>ž®èƒ–åQšå“ˆå“ˆï¼Œè‚¥å©†ä¸‡å²ã€?/em></p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><br />
</p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;">PS:䏋颿‰“算写的一些东è¥?/p>
<p style="text-align: left; margin: 0px" class="MsoNormal" align="left" mce_style="text-align: left;"><br />
</p>
<p style="margin: 0px" class="MsoNormal"><br />
</p>
<ol>
<li>TreeMap的排åºåŠå…¶ä»–相关集刾c?/li>
<li>synchronizedMapçš„ä‹É用方å¼?/li>
<li>concurrentMap实现¾l†èŠ‚å’Œä‹Éç”?/li>
<li>Properties使用说明�nbsp;扩展</li>
<li>Iterator和Enumeration的区�/li>
<li>Hash½Ž—法 的实çŽ?nbsp;</li>
</ol>
</span></span>
<img src ="http://www.aygfsteel.com/TimmyWang/aggbug/345291.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/TimmyWang/" target="_blank">王胖å?/a> 2011-02-27 19:47 <a href="http://www.aygfsteel.com/TimmyWang/archive/2011/02/27/345291.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item></channel></rss> <footer>
<div class="friendship-link">
<a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a>
</div>
</footer>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º
<a href="http://" target="_blank">ºÏÑôÏØ</a>|
<a href="http://" target="_blank">ÎÚÊ²ÏØ</a>|
<a href="http://" target="_blank">¹ãË®ÊÐ</a>|
<a href="http://" target="_blank">ÓÀÊ¤ÏØ</a>|
<a href="http://" target="_blank">ÎäÒØÏØ</a>|
<a href="http://" target="_blank">Ë«ÅÆÏØ</a>|
<a href="http://" target="_blank">ÆÎÌïÊÐ</a>|
<a href="http://" target="_blank">¾äÈÝÊÐ</a>|
<a href="http://" target="_blank">ÒËÀ¼ÏØ</a>|
<a href="http://" target="_blank">Äþ³ÇÏØ</a>|
<a href="http://" target="_blank">Ôæ×¯ÊÐ</a>|
<a href="http://" target="_blank">³£É½ÏØ</a>|
<a href="http://" target="_blank">±öÑôÏØ</a>|
<a href="http://" target="_blank">ÁúÃÅÏØ</a>|
<a href="http://" target="_blank">ÏÌ·áÏØ</a>|
<a href="http://" target="_blank">Íû³ÇÏØ</a>|
<a href="http://" target="_blank">ÇàÑôÏØ</a>|
<a href="http://" target="_blank">°¢Â³¿Æ¶ûÇ߯ì</a>|
<a href="http://" target="_blank">ÉäÑôÏØ</a>|
<a href="http://" target="_blank">³ö¹ú</a>|
<a href="http://" target="_blank">ÓñÊ÷ÏØ</a>|
<a href="http://" target="_blank">ãòÖÝÊÐ</a>|
<a href="http://" target="_blank">å¡ÏªÏØ</a>|
<a href="http://" target="_blank">¿Æ¼¼</a>|
<a href="http://" target="_blank">Çì³ÇÏØ</a>|
<a href="http://" target="_blank">Äþ¶¼ÏØ</a>|
<a href="http://" target="_blank">¼½ÖÝÊÐ</a>|
<a href="http://" target="_blank">Ðû¶÷ÏØ</a>|
<a href="http://" target="_blank">¶þÊÖ·¿</a>|
<a href="http://" target="_blank">ÄÚ»ÆÏØ</a>|
<a href="http://" target="_blank">ÌÒÔ°ÊÐ</a>|
<a href="http://" target="_blank">¾²°²Çø</a>|
<a href="http://" target="_blank">»ñ¼ÎÏØ</a>|
<a href="http://" target="_blank">ÃÉ×ÔÏØ</a>|
<a href="http://" target="_blank">ÎåÔÏØ</a>|
<a href="http://" target="_blank">·ÚÎ÷ÏØ</a>|
<a href="http://" target="_blank">¹Ì°²ÏØ</a>|
<a href="http://" target="_blank">¶¨ÖÝÊÐ</a>|
<a href="http://" target="_blank">Ñúå¨</a>|
<a href="http://" target="_blank">Æ½Ë³ÏØ</a>|
<a href="http://" target="_blank">¾®ÚêÏØ</a>|
<script>
(function(){
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https') {
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else {
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
</script>
</body>