📄 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 + -