?? 比較hashtable類和hashmap類的不同之處-java面向?qū)ο?- it電子教育門戶 高端java培訓(xùn).htm
字號:
?<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0062)http://www.mldn.cn/articleview/2007-9-24/article_view_2474.htm -->
<HTML><HEAD><TITLE>比較Hashtable類和HashMap類的不同之處/JAVA面向?qū)ο?- IT電子教育門戶 高端JAVA培訓(xùn)</TITLE>
<STYLE type=text/css>BODY {
FONT-SIZE: 12px
}
TD {
FONT-SIZE: 12px
}
TH {
FONT-SIZE: 12px
}
.STYLE1 {
FONT-WEIGHT: bold; FONT-SIZE: 18px; COLOR: #003399
}
.STYLE2 {
FONT-SIZE: 14px
}
</STYLE>
<META content="MSHTML 6.00.2900.2180" name=GENERATOR>
<META content=g0IGIjwMtoTt4TksXOL7QykvujGWD7D0AoPDPWEsjRs= name=verify-v1>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<META http-equiv=Content-Language content=zh-CN>
<META content=java培訓(xùn),mldn,JAVA教程,北京JAVA培訓(xùn),IT電子教育門戶,北京JAVA培訓(xùn),Hashtable類,HashMap類
name=keywords>
<META
content=也許最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。這就意味著,雖然你可以不用采取任何特殊的行為就可以在一個多線程的應(yīng)用程序中用一個Hashtable,但你必須同樣地為一個HashMap提供外同步。
name=description>
<META content=all name=robots>
<META content=www.mldn.cn,所有版權(quán) name=Copyright>
<STYLE type=text/css>BODY {
MARGIN: 0px
}
</STYLE>
<STYLE type=text/css>IMG {
BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
A:link {
TEXT-DECORATION: none
}
BODY {
FONT-SIZE: 12px
}
TD {
FONT-SIZE: 12px
}
TH {
FONT-SIZE: 12px
}
A:visited {
TEXT-DECORATION: none
}
A:hover {
TEXT-DECORATION: underline
}
A:active {
TEXT-DECORATION: none
}
.input {
BORDER-RIGHT: #acb4b7 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #9aa1a9 1px solid; PADDING-LEFT: 0px; FONT-SIZE: 14px; BACKGROUND-ATTACHMENT: fixed; BACKGROUND-IMAGE: url(image/search/input.gif); PADDING-BOTTOM: 5px; BORDER-LEFT: #9aa1a9 1px solid; WIDTH: 550px; PADDING-TOP: 5px; BORDER-BOTTOM: #acb4b7 1px solid; BACKGROUND-REPEAT: no-repeat; HEIGHT: 30px; TEXT-ALIGN: left
}
</STYLE>
</STYLE><!--系統(tǒng)js,必須調(diào)用-->
<SCRIPT
src="比較Hashtable類和HashMap類的不同之處-JAVA面向?qū)ο?- IT電子教育門戶 高端JAVA培訓(xùn).files/public.js"
type=text/javascript></SCRIPT>
<LINK title=rss href="http://www.mldn.cn/rssfeed.asp" type=application/rss+xml
rel=alternate></HEAD>
<BODY><!--頭部代碼結(jié)束-->
<TABLE cellSpacing=0 cellPadding=0 width=890 align=center border=0>
<TBODY>
<TR>
<TD width=274><A href="http://www.mldn.cn/"><IMG height=79 alt=MLDN
src="比較Hashtable類和HashMap類的不同之處-JAVA面向?qū)ο?- IT電子教育門戶 高端JAVA培訓(xùn).files/logo.gif"
width=274 border=0></A></TD>
<TD width=616><IMG height=79
src="比較Hashtable類和HashMap類的不同之處-JAVA面向?qū)ο?- IT電子教育門戶 高端JAVA培訓(xùn).files/main_r1_c2.gif"
width=616 useMap=#Map border=0></TD></TR></TBODY></TABLE><MAP name=Map><AREA
shape=RECT coords=8,22,45,49 href="http://www.mldn.cn/"><AREA shape=RECT
coords=53,22,113,50
href="http://www.mldn.cn/articlelist/article_3_adddate_desc_1.htm"><AREA
shape=RECT coords=116,20,177,51
href="http://www.mldn.cn/articlelist/article_4_adddate_desc_1.htm"><AREA
shape=RECT alt=java培訓(xùn) coords=181,21,242,51
href="http://www.mldn.cn/articlelist/article_58_adddate_desc_1.htm"><AREA
shape=RECT coords=245,21,307,52 href="http://www.mldnjava.cn/"><AREA
shape=RECT coords=309,21,374,51 href="http://www.zhinangtuan.net.cn/"><AREA
shape=RECT target=_blank coords=376,21,439,50
href="http://www.mldnjava.cn/java/index.htm"></MAP>
<SCRIPT language=javascript></SCRIPT>
<TABLE cellSpacing=0 cellPadding=0 width=890 align=center border=0>
<TBODY>
<TR>
<TD><A href="http://www.mldnjava.cn/java/" target=blank><IMG height=150
alt=遠(yuǎn)程JAVA培訓(xùn)
src="比較Hashtable類和HashMap類的不同之處-JAVA面向?qū)ο?- IT電子教育門戶 高端JAVA培訓(xùn).files/index_banner.jpg"
width=890></A></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=890 align=center bgColor=#f1f1f1
border=0>
<TBODY>
<TR>
<TD vAlign=top width=670>
<TABLE cellSpacing=1 cellPadding=0 width="99%" align=center
bgColor=#cccccc border=0>
<TBODY>
<TR>
<TD bgColor=#ffffff>
<TABLE cellSpacing=0 cellPadding=0 width="98%" align=center
border=0>
<TBODY>
<TR>
<TD bgColor=#e4e4e4 colSpan=2><A
href="http://www.mldn.cn/"><B>IT電子教育門戶 高端JAVA培訓(xùn)</B></A> -=>
<A
href="http://www.mldn.cn/articlelist/article_4_adddate_desc_1.htm"><B>資源中心</B></A>
-=> <A
href="http://www.mldn.cn/articlelist/article_11_adddate_desc_1.htm"><B>JAVA
SE技術(shù)專區(qū)</B></A> -=> <A
href="http://www.mldn.cn/articlelist/article_18_adddate_desc_1.htm"><B>JAVA面向?qū)ο?lt;/B></A>
-=> 正文</TD></TR>
<TR>
<TD align=middle colSpan=2 height=40>
<H1>比較Hashtable類和HashMap類的不同之處</H1></TD></TR>
<TR align=middle>
<TD colSpan=2 height=40>
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-8263014661871932";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-02-14: 新聞內(nèi)容頁面上面
google_ad_channel = "8423241514";
google_color_border = "FFFFFF";
google_color_bg = "FFFFFF";
google_color_link = "333333";
google_color_text = "333333";
google_color_url = "003366";
//--></SCRIPT>
<SCRIPT
src="比較Hashtable類和HashMap類的不同之處-JAVA面向?qū)ο?- IT電子教育門戶 高端JAVA培訓(xùn).files/show_ads.js"
type=text/javascript>
</SCRIPT>
</TD></TR>
<TR>
<TD colSpan=2 height=40> 發(fā)布日期:2007-9-24
9:51:00 發(fā)布者:[<A
href="http://www.mldn.cn/florilegium.jtml?a_name=IT電子教育門戶&a_id=0"
rel=external>IT電子教育門戶</A>] 評論:[
<SCRIPT
src="比較Hashtable類和HashMap類的不同之處-JAVA面向?qū)ο?- IT電子教育門戶 高端JAVA培訓(xùn).files/error.htm"
type=text/javascript></SCRIPT>
] 瀏覽:
<SCRIPT
src="C:\Documents and Settings\elibuser\桌面\面向?qū)ο髮W(xué)習(xí)文檔\比較Hashtable類和HashMap類的不同之處-JAVA面向?qū)ο?- IT電子教育門戶 高端JAVA培訓(xùn).files\error(1).htm"
type=text/javascript></SCRIPT>
</TD></TR>
<TR>
<TD colSpan=2><SPAN class=STYLE2>
<DIV id=article><FONT
face="Times New Roman">Hashtable和HashMap類有三個重要的不同之處。 <BR>第一個不同
<BR>主要是歷史原因。Hashtable是基于陳舊的Dictionary類的,HashMap是Java
1.2引進(jìn)的Map接口的一個實現(xiàn)。 <BR>第二個不同
<BR>也許最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。這就意味著,雖然你可以不用采取任何特殊的行為就可以在一個多線程的應(yīng)用程序中用一個Hashtable,但你必須同樣地為一個HashMap提供外同步。一個方便的方法就是利用Collections類的靜態(tài)的synchronizedMap()方法,它創(chuàng)建一個線程安全的Map對象,并把它作為一個封裝的對象來返回。這個對象的方法可以讓你同步訪問潛在的HashMap。這么做的結(jié)果就是當(dāng)你不需要同步時,你不能切斷Hashtable中的同步(比如在一個單線程的應(yīng)用程序中),而且同步增加了很多處理費用。
<BR>第三點不同
<BR>只有HashMap可以讓你將空值作為一個表的條目的key或value。HashMap中只有一條記錄可以是一個空的key,但任意數(shù)量的條目可以是空的value。這就是說,如果在表中沒有發(fā)現(xiàn)搜索鍵,或者如果發(fā)現(xiàn)了搜索鍵,但它是一個空的值,那么get()將返回null。如果有必要,用containKey()方法來區(qū)別這兩種情況。
<BR>一些資料建議,當(dāng)需要同步時,用Hashtable,反之用HashMap。但是,因為在需要時,HashMap可以被同步,HashMap的功能比Hashtable的功能更多,而且它不是基于一個陳舊的類的,所以有人認(rèn)為,在各種情況下,HashMap都優(yōu)先于Hashtable。
<BR>關(guān)于Properties
<BR>有時侯,你可能想用一個hashtable來映射key的字符串到value的字符串。DOS、Windows和Unix中的環(huán)境字符串就有一些例子,如key的字符串PATH被映射到value的字符串C:\WINDOWS;C:\WINDOWS\SYSTEM。Hashtables是表示這些的一個簡單的方法,但Java提供了另外一種方法。
<BR>Java.util.Properties類是Hashtable的一個子類,設(shè)計用于String
keys和values。Properties對象的用法同Hashtable的用法相象,但是類增加了兩個節(jié)省時間的方法,你應(yīng)該知道。
<BR>Store()方法把一個Properties對象的內(nèi)容以一種可讀的形式保存到一個文件中。Load()方法正好相反,用來讀取文件,并設(shè)定Properties對象來包含keys和values。
<BR>注意,因為Properties擴(kuò)展了Hashtable,你可以用超類的put()方法來添加不是String對象的keys和values。這是不可取的。另外,如果你將store()用于一個不包含String對象的Properties對象,store()將失敗。作為put()和get()的替代,你應(yīng)該用setProperty()和getProperty(),它們用String參數(shù)。</FONT>
</DIV></SPAN></TD></TR>
<TR>
<TD width="71%"> </TD>
<TD width="29%">【 <A
href="http://www.mldn.cn/print.jtml?articleid=2474">打印</A> 】【
<A
href="http://www.mldn.cn/member/favlist.jtml?action=add&postid=2474">收藏</A>
】【 <A href="http://www.mldn.cn/email.jtml?articleid=2474"
target=_blank>推薦</A> 】 </TD></TR>
<TR>
<TD colSpan=2>
<TABLE cellSpacing=3 cellPadding=0 width="100%" align=center
bgColor=#ffffff border=0>
<TBODY>
<TR height=25>
<TD align=middle width="33%"><IMG height=95 alt=java視頻教程
src="比較Hashtable類和HashMap類的不同之處-JAVA面向?qū)ο?- IT電子教育門戶 高端JAVA培訓(xùn).files/javavideo.gif"
width=642></TD></TR>
<TR>
<TD class=content-table vAlign=top align=middle>
<TABLE>
<TBODY>
<TR>
<TD>
<TABLE>
<TBODY>
<TR>
<TD><A
href="http://www.mldn.cn/articleview/2007-8-21/article_view_2251.htm"
rel=external><IMG class=midImg alt=struts2.0入門視頻
src="比較Hashtable類和HashMap類的不同之處-JAVA面向?qū)ο?- IT電子教育門戶 高端JAVA培訓(xùn).files/struts2.gif"
width=90></A></TD></TR>
<TR>
<TD style="HEIGHT: 22px"> <A
title=struts2.0入門視頻
href="http://www.mldn.cn/articleview/2007-8-21/article_view_2251.htm"
rel=external>struts2.0入門視頻</A></TD></TR></TBODY></TABLE></TD>
<TD>
<TABLE>
<TBODY>
<TR>
<TD><A
href="http://www.mldn.cn/articleview/2007-6-15/article_view_2141.htm"
rel=external><IMG class=midImg
alt=JAVAEE學(xué)習(xí)流程和學(xué)習(xí)方法
src="比較Hashtable類和HashMap類的不同之處-JAVA面向?qū)ο?- IT電子教育門戶 高端JAVA培訓(xùn).files/j2eejc.gif"
width=90></A></TD></TR>
<TR>
<TD style="HEIGHT: 22px"> <A
title=JAVAEE學(xué)習(xí)流程和學(xué)習(xí)方法
href="http://www.mldn.cn/articleview/2007-6-15/article_view_2141.htm"
rel=external>JAVAEE學(xué)習(xí)流程和學(xué)習(xí)方..</A></TD></TR></TBODY></TABLE></TD>
<TD>
<TABLE>
<TBODY>
<TR>
<TD><A
href="http://www.mldn.cn/articleview/2007-6-5/article_view_2091.htm"
rel=external><IMG class=midImg
alt=1-Java介紹及JDK配置
src="比較Hashtable類和HashMap類的不同之處-JAVA面向?qū)ο?- IT電子教育門戶 高端JAVA培訓(xùn).files/javase.gif"
width=90></A></TD></TR>
<TR>
<TD style="HEIGHT: 22px"> <A
title=1-Java介紹及JDK配置
href="http://www.mldn.cn/articleview/2007-6-5/article_view_2091.htm"
rel=external>1-Java介紹及JDK配置..</A></TD></TR></TBODY></TABLE></TD>
<TD>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -