?? java中的hashtable.htm
字號:
type=text/javascript></SCRIPT>
<SCRIPT type=text/javascript>
cpro_client='haocpc_9013628_cpr';
cpro_cbd='#trans';
cpro_cbg='#trans';
cpro_ctitle='#0000ff';
cpro_cflush='#e10900';
cpro_flush=4;
cpro_uap=1;
cpro_w=728;
cpro_h=15;
cpro_template='wlink_default_728_15';
</SCRIPT>
<SCRIPT language=JavaScript src="Java中的Hashtable.files/cp.js"
type=text/javascript></SCRIPT>
</TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=940 align=center border=0>
<TBODY>
<TR>
<TD height=6></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=940 align=center border=0>
<TBODY>
<TR>
<TD class=font12w bgColor=#689cd5 height=26> 您現在的位置: <A
class=LinkPath href="http://syue.com/">歲月聯盟</A> >> <A
class=LinkPath
href="http://www.syue.com/Java/Index.html">Java</A> >> <A
class=LinkPath
href="http://www.syue.com/Java/List/List_661.html">其他技術</A> >> 正文</TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=940 align=center border=0>
<TBODY>
<TR>
<TD height=6></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=940 align=center border=0>
<TBODY>
<TR>
<TD vAlign=top>
<TABLE cellSpacing=1 cellPadding=0 width="100%" align=center
bgColor=#689cd5 border=0>
<TBODY>
<TR>
<TD vAlign=top bgColor=#ffffff>
<TABLE height=1000 cellSpacing=0 cellPadding=5 width="100%"
border=0>
<TBODY>
<TR>
<TD class=font14 align=middle bgColor=#deebf9
height=34><STRONG><FONT
color=#0066cc>Java中的Hashtable</FONT></STRONG></TD></TR>
<TR>
<TD class=font12 align=middle height=30><FONT
color=#999999>作者:未知 文章來源:<A
href="http://www.syue.com/ShowCopyFrom.asp?ChannelID=1019&SourceName=本站整理">本站整理</A>
點擊數:
<SCRIPT language=javascript src=""></SCRIPT>
更新時間:2007-7-23 9:33:45</FONT></TD></TR>
<TR>
<TD class=font14 vAlign=top height=797>
<DIV class=div_nr align=left>
<TABLE class=font14 cellSpacing=0 cellPadding=0 width="100%"
border=0>
<TBODY>
<TR>
<TD><BR> Vector允許我們用一個數字從一系列對象中作出選擇,所以它實際是將數字同對象關聯起來了。但假如我們想根據其他標準選擇一系列對象呢?堆棧就是這樣的一個例子:它的選擇標準是“最后壓入堆棧的東西”。這種“從一系列對象中選擇”的概念亦可叫作一個“映射”、“字典”或者“關聯數組”。從概念上講,它看起來象一個Vector,但卻不是通過數字來查找對象,而是用另一個對象來查找它們!這通常都屬于一個程序中的重要進程。<BR> 在Java中,這個概念具體反映到抽象類Dictionary身上。該類的接口是非常直觀的size()告訴我們其中包含了多少元素;isEmpty()判斷是否包含了元素(是則為true);put(Object
key, Object
value)添加一個值(我們希望的東西),并將其同一個鍵關聯起來(想用于搜索它的東西);get(Object
key)獲得與某個鍵對應的值;而remove(Object
Key)用于從列表中刪除“鍵-值”對。還可以使用枚舉技術:keys()產生對鍵的一個枚舉(Enumeration);而elements()產生對所有值的一個枚舉。這便是一個Dictionary(字典)的全部。<BR> Dictionary的實現過程并不麻煩。下面列出一種簡單的方法,它使用了兩個Vector,一個用于容納鍵,另一個用來容納值:<BR> <BR> //:
AssocArray.java<BR> // Simple version of a
Dictionary<BR> import java.util.*;<BR> <BR> public
class AssocArray extends Dictionary {<BR> private
Vector keys = new Vector();<BR> private Vector values
= new Vector();<BR> public int size() { return
keys.size(); }<BR> public boolean isEmpty()
{<BR> return keys.isEmpty();<BR> }<BR> public
Object put(Object key, Object value)
{<BR> keys.addElement(key);<BR> values.addElement(value);<BR> return
key;<BR> }<BR> public Object get(Object key)
{<BR> int index = keys.indexOf(key);<BR> //
indexOf() Returns -1 if key not found:<BR> if(index
== -1) return null;<BR> return
values.elementAt(index);<BR> }<BR> public Object
remove(Object key) {<BR> int index =
keys.indexOf(key);<BR> if(index == -1) return
null;<BR> keys.removeElementAt(index);<BR> Object
returnval =
values.elementAt(index);<BR> values.removeElementAt(index);<BR> return
returnval;<BR> }<BR> public Enumeration keys()
{<BR> return keys.elements();<BR> }<BR> public
Enumeration elements() {<BR> return
values.elements();<BR> }<BR> // Test
it:<BR> public static void main(String[] args)
{<BR> AssocArray aa = new
AssocArray();<BR> for(char c = 'a'; c <= 'z';
c++)<BR> aa.put(String.valueOf(c),<BR>
String.valueOf(c)<BR>
.toUpperCase());<BR> char[] ca = { 'a', 'e', 'i',
'o', 'u' };<BR> for(int i = 0; i < ca.length;
i++)<BR> System.out.println("Uppercase: "
+<BR>
aa.get(String.valueOf(ca[i])));<BR> }<BR> }
///:~<BR> <BR> 在對AssocArray的定義中,我們注意到的第一個問題是它“擴展”了字典。這意味著AssocArray屬于Dictionary的一種類型,所以可對其發出與Dictionary一樣的請求。如果想生成自己的Dictionary,而且就在這里進行,那么要做的全部事情只是填充位于Dictionary內的所有方法(而且必須覆蓋所有方法,因為它們——除構建器外——都是抽象的)。<BR> Vector
key和value通過一個標準索引編號鏈接起來。也就是說,如果用“roof”的一個鍵以及“blue”的一個值調用put()——假定我們準備將一個房子的各部分與它們的油漆顏色關聯起來,而且AssocArray里已有100個元素,那么“roof”就會有101個鍵元素,而“blue”有101個值元素。而且要注意一下get(),假如我們作為鍵傳遞“roof”,它就會產生與keys.index.Of()的索引編號,然后用那個索引編號生成相關的值矢量內的值。<BR> main()中進行的測試是非常簡單的;它只是將小寫字符轉換成大寫字符,這顯然可用更有效的方式進行。但它向我們揭示出了AssocArray的強大功能。<BR> 標準Java庫只包含Dictionary的一個變種,名為Hashtable(散列表,注釋③)。Java的散列表具有與AssocArray相同的接口(因為兩者都是從Dictionary繼承來的)。但有一個方面卻反映出了差別:執行效率。若仔細想想必須為一個get()做的事情,就會發現在一個Vector里搜索鍵的速度要慢得多。但此時用散列表卻可以加快不少速度。不必用冗長的線性搜索技術來查找一個鍵,而是用一個特殊的值,名為“散列碼”。散列碼可以獲取對象中的信息,然后將其轉換成那個對象“相對唯一”的整數(int)。所有對象都有一個散列碼,而hashCode()是根類Object的一個方法。Hashtable獲取對象的hashCode(),然后用它快速查找鍵。這樣可使性能得到大幅度提升(④)。散列表的具體工作原理已超出了本書的范圍(⑤)——大家只需要知道散列表是一種快速的“字典”(Dictionary)即可,而字典是一種非常有用的工具。<BR> <BR> ③:如計劃使用RMI(在第15章詳述),應注意將遠程對象置入散列表時會遇到一個問題(參閱《Core
Java》,作者Conrell和Horstmann,Prentice-Hall
1997年出版)<BR> ④:如這種速度的提升仍然不能滿足你對性能的要求,甚至可以編寫自己的散列表例程,從而進一步加快表格的檢索過程。這樣做可避免在與Object之間進行造型的時間延誤,也可以避開由Java類庫散列表例程內建的同步過程。<BR> ⑤:我的知道的最佳參考讀物是《Practical
Algorithms for Programmers》,作者為Andrew Binstock和John
Rex,Addison-Wesley
1995年出版。<BR> <BR> 作為應用散列表的一個例子,可考慮用一個程序來檢驗Java的Math.random()方法的隨機性到底如何。在理想
<P></P>
<P align=center><B><FONT color=red>[1]</FONT> <A
href="http://www.syue.com/Java/HTML/76978_2.html">[2]</A> <A
href="http://www.syue.com/Java/HTML/76978_2.html">下一頁</A>
</B></P><BR></TD></TR></TBODY></TABLE></DIV></TD></TR>
<TR>
<TD class=font14>
<TABLE height=20 cellSpacing=0 cellPadding=0 width="100%"
border=0>
<TBODY>
<TR>
<TD align=middle height=80><FONT color=#ff0000>
<SCRIPT language=javascript
src="Java中的Hashtable.files/65.js"></SCRIPT>
</FONT></TD></TR></TBODY></TABLE>
<TABLE height=60 cellSpacing=0 cellPadding=0 width="100%"
border=0>
<TBODY>
<TR>
<TD align=middle height=60><FONT color=#ff0000>
<SCRIPT language=javascript
src="Java中的Hashtable.files/68.js"></SCRIPT>
</FONT></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD height=10></TD></TR></TBODY></TABLE>
<TABLE class=font12 cellSpacing=1 cellPadding=2 width="100%"
align=center border=0>
<TBODY>
<TR>
<TD bgColor=#deebf9 height=30><STRONG>
<LI>上一個Java: <A class=LinkPrevArticle
title="文章標題:Java中的Stack 作 者:未知 更新時間:2007-7-23 9:33:45"
href="http://www.syue.com/Java/HTML/76977.html">Java中的Stack</A></STRONG></LI></TD></TR>
<TR>
<TD bgColor=#deebf9 height=28><STRONG>
<LI>下一個Java: <A class=LinkNextArticle
title="文章標題:再論枚舉器 作 者:未知 更新時間:2007-7-23 9:33:45"
href="http://www.syue.com/Java/HTML/76979.html">再論枚舉器</A></STRONG></LI></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD>
<TD width=6> </TD>
<TD vAlign=top width=300>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=1 cellPadding=0 width="100%" bgColor=#689cd5
border=0>
<TBODY>
<TR>
<TD align=middle bgColor=#deebf9 height=10>
<TABLE height=30 cellSpacing=0 cellPadding=0 width="96%"
border=0>
<FORM name=form1 action=/search.asp method=post
target=_blank>
<TBODY>
<TR>
<TD width=160><INPUT id=Keyword2 name=Keyword2> </TD>
<TD align=middle width=110><SELECT id=ModuleName
name=ModuleName> <OPTION value=Article
selected>文章搜索</OPTION> <OPTION
value=Soft>下載搜索</OPTION> <OPTION
value=Photo>圖片搜索</OPTION></SELECT> </TD>
<TD align=middle width=60><INPUT type=submit value=搜索 name=Submit2>
</TD></TR></FORM></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD height=10></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD height=300>
<SCRIPT language=javascript
src="Java中的Hashtable.files/66.js"></SCRIPT>
</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD height=10></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=1 cellPadding=3 width="100%" bgColor=#689cd5
border=0><TBODY>
<TR>
<TD class=font14 bgColor=#deebf9><STRONG>熱門文章</STRONG></TD></TR>
<TR>
<TD vAlign=top bgColor=#ffffff height=300>
<DIV class=font12 align=left>
<SCRIPT language=javascript
src="Java中的Hashtable.files/rmwz.js"></SCRIPT>
</DIV></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD height=10></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=1 cellPadding=3 width="100%" bgColor=#689cd5
border=0><TBODY>
<TR>
<TD class=font14 bgColor=#deebf9><STRONG>推薦文章</STRONG></TD></TR>
<TR>
<TD vAlign=top bgColor=#ffffff height=300>
<DIV class=font12 align=left>
<SCRIPT language=javascript
src="Java中的Hashtable.files/tjwz.js"></SCRIPT>
</DIV></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=940 align=center border=0>
<TBODY>
<TR>
<TD height=6></TD></TR></TBODY></TABLE>
<TABLE style="BORDER-TOP: #ffffff 3px solid" cellSpacing=1 cellPadding=0
width=940 align=center bgColor=#e0e0e0 border=0>
<TBODY>
<TR>
<TD class=font12 align=middle bgColor=#f1f1f1 height=28><A
href="http://china.syue.com/about.htm" target=_blank>關于我們</A> | <A
href="http://china.syue.com/course.htm" target=_blank>發展歷程</A> | <A
href="http://china.syue.com/sitemaps.htm" target=_blank>網站地圖</A> | <A
href="http://china.syue.com/ads.htm" target=_blank>廣告服務</A> | <A
href="http://china.syue.com/jobs.htm" target=_blank>招賢納士</A> | <A
href="http://china.syue.com/cooperate.htm" target=_blank>戰略合作</A> | <A
href="http://china.syue.com/link.htm" target=_blank>友情鏈接</A> | <A
href="http://china.syue.com/manifesto.htm" target=_blank>著作聲明</A> | <A
href="http://china.syue.com/contact.htm" target=_blank>聯系我們</A>
</TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=940 align=center border=0>
<TBODY>
<TR>
<TD align=middle bgColor=#ffffff colSpan=3 height=8></TD></TR>
<TR>
<TD align=middle width=40 height=45><IMG
src="Java中的Hashtable.files/biaoshi.gif" border=0></TD>
<TD align=middle width=860 height=45>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=font12 align=middle>Copyright © 2002-2007 SYUE All rights
reserved.<BR>E_mail:<FONT color=#ff0000>Admin@Syue.Com</FONT>
皖ICP備05004589號 <!------------統計開始------------>
<SCRIPT language=javascript src="Java中的Hashtable.files/91455.js"
type=text/javascript></SCRIPT>
<NOSCRIPT></NOSCRIPT><!------------統計結束------------><BR>未經授權禁止轉載、摘編、復制或建立鏡像.如有違反,追究法律責任.</TD></TR></TBODY></TABLE></TD>
<TD align=right width=40 height=45><IMG
src="Java中的Hashtable.files/anhui.gif" border=0></TD>
<TR>
<TD width=940 colSpan=3 height=5><A href="http://www.888ball.cn/"
target=_blank><FONT size=1>888</FONT></A> <A href="http://www.136wg.com/"
target=_blank><FONT size=1>傳奇世界私服</FONT></A> <A
href="http://www.bet365.net.cn/" target=_blank><FONT
size=1>bet365</FONT></A> <A href="http://www.52dir.com/"
target=_blank><FONT size=1>破天一劍私服</FONT></A> <A
href="http://www.jzsf123.com/" target=_blank><FONT size=1>機戰私服</FONT></A>
<A href="http://www.888zuqiu.cn/" target=_blank><FONT
size=1>888真人</FONT></A> <A href="http://www.spn365.com/"
target=_blank><FONT size=1>bet365</FONT></A> <A
href="http://www.ols365.cn/" target=_blank><FONT size=1>bet365</FONT></A>
</TD></TR></TR></TBODY></TABLE></TD></TR></TR></TABLE>
<SCRIPT src="" type=text/javascript></SCRIPT>
</BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -