`

Hashtable啊Hashtable今天载到在你手里了!

阅读更多

今天整个上午都在调试一个程序,我就纳了闷了,NND,为什么我明明把ip存进内存 了,重复查询的时候还是去硬盘?

调啊调都没看明白,后来一看JDK才明白,娘西皮滴!

  原来Hashtable的contains(Object),指的是是否包含value而不是key!!!

  竟然和Map的containsValue(Object value)在功能上是一样的。吃里爬外的方法!
  汗的教训哪!!
       

分享到:
评论
25 楼 weng 2011-06-15  
<p>
</p>
<div style="color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; margin: 8px;">
<div class="quote_title" style="font-weight: bold; margin-top: 5px; margin-right: 0px; margin-bottom: 0px; margin-left: 15px; padding: 5px;">dotjar 写道</div>
<div class="quote_div" style="margin-top: 0px; margin-right: 5px; margin-bottom: 5px; margin-left: 15px; background-color: #fafafa; padding: 3px; border: 1px solid #cccccc;">
<p style="margin: 0px;"><span style="color: #99cc00; font-size: medium;">今天整个上午都在调试一个程序,我就纳了闷了,NND,为什么我明明把ip存进内存 了,重复查询的时候还是去硬盘?</span></p>
<p style="margin: 0px;"><span style="color: #99cc00; font-size: medium;">调啊调都没看明白,后来一看JDK才明白,娘西皮滴!</span></p>
<p style="margin: 0px;"><span style="color: #99cc00; font-size: medium;">  原来Hashtable的contains(Object),指的是是否包含value而不是key!!!</span></p>
<p style="margin: 0px;"><span style="color: #99cc00; font-size: medium;">  竟然和Map的containsValue(Object value)在功能上是一样的。吃里爬外的方法!<br>  <img style="" src="/images/smiles/icon_cry.gif" alt=""> 汗的教训哪!!<br>       </span></p>
<div><span style="color: #99cc00; font-size: medium;"><br></span></div>
</div>
</div>
<br>Hashtable很少用了,木在项目里面用过
<p> </p>
24 楼 dotjar 2011-04-20  
langyu 写道
从代码看,好像是历史问题造成的。Java 1.0版本是使用contains()方法,在1.2版本才引入 Java Collections Framework,抽象了Map接口。此接口中包含containsKey()与containsValue()方法,因为有功能的重复,所以Hashtable的containsValue()只是内部自己处理了下,尽管方法声明上有提示,但还是会造成我们的误解,这样不好

我只是觉得为什么Hashtable里既然有了containsKey和containsValue为什么还要加一个contains方法且功能和containsValue一样呢?
23 楼 bmqnc 2011-02-22  
多看看api doc很重要,其实很多问题java的api doc中都写得很清楚,我之前就碰到一个关于api设计的问题也很纠结,后来也是详细的看了之后才明白的。

如果再不懂,我觉得可以可以看源代码的,况且jdk的源代码是open source的,侯捷说的好啊:源码面前,了无秘密。

所以我觉得有机会还是多看看源码是必要的,即便看不懂,看看代码的coding style也是很好的,我看云风有时也是这么干的。^_^。。。。
22 楼 captmjc 2011-02-21  
thihy 写道
smaxpp 写道
应该用HashMap嘛,containsKey, containsValue.更明确


HashTable也有ontainsKey方法。只是楼主一不看JavaDoc,二不用Map接口抽象。



同感。API可能容易忽略。但是如果养成
Map<...> map = new Hashtable<...>
而不是
Hashtable .... = ....
的习惯,就不会出现这个问题了。
21 楼 thihy 2011-02-21  
smaxpp 写道
应该用HashMap嘛,containsKey, containsValue.更明确


HashTable也有ontainsKey方法。只是楼主一不看JavaDoc,二不用Map接口抽象。
20 楼 smaxpp 2011-02-21  
应该用HashMap嘛,containsKey, containsValue.更明确
19 楼 lucane 2011-02-21  
高手说
不要用不常用的方法
如果不得不用,一定要仔细阅读文档
仔细进行测试
18 楼 NanguoCoffee 2011-02-21  
sdh5724 写道
编码的时候, 最好把JDK 的DOC/SRC 都纳入到ECLIPSE的设置里去。  基本上, 这样就能很清晰的理解API的作用了。  我基本如果不是很确定一个方法的调用, 我会打开对应的类详细阅读一次。 JDK因为历史的因素, 个别方法名字似乎不是那么能确切解释方法的含义。  在编码的时候, 我比较鼓励同时适当阅读JDK的代码, 这习惯能让你收益颇多。


源码才是王道!!!
有极大部分的人不会阅读源码的。
就知道拿着中文版的API doc来看,不知道这玩意儿能看得出啥?

17 楼 sam_kee 2011-02-20  
我之前用List,其中的方法contains(Object obj)也是啊,虽然两个对象内容相同,但是依然不存在
16 楼 sdh5724 2011-02-20  
编码的时候, 最好把JDK 的DOC/SRC 都纳入到ECLIPSE的设置里去。  基本上, 这样就能很清晰的理解API的作用了。  我基本如果不是很确定一个方法的调用, 我会打开对应的类详细阅读一次。 JDK因为历史的因素, 个别方法名字似乎不是那么能确切解释方法的含义。  在编码的时候, 我比较鼓励同时适当阅读JDK的代码, 这习惯能让你收益颇多。
15 楼 玲cc 2011-02-20  
有点晕,从来不用hashtable
14 楼 key_hua 2011-02-19  
hashtable 没玩过,啥时候用
13 楼 洪帮主 2011-02-19  
楼主果断牛逼,我都没用过HashTable,什么项目居然会用到?
12 楼 totong 2011-02-19  
不推荐使用了就不要用了嘛,使用Collections里面的方法来同步
11 楼 onlylau 2011-02-19  
记得Hashtable与HashMap之间的区别之一就是这两个方法的不同

好像有这样的一个java笔试题是这样的
10 楼 shhbobby 2011-02-18  
标记一下,以后自己也要注意
9 楼 bxj0702 2011-02-18  
NanguoCoffee 写道
bxj0702 写道
boolean contains(Object value)
          测试此映射表中是否存在与指定值关联的键。
boolean containsValue(Object value)
          如果此 Hashtable 将一个或多个键映射到此值,则返回 true。

改天仔细看看这两个方法的区别。


要这么看?
public boolean containsValue(Object value) {
	return contains(value);
    }




8 楼 steafler 2011-02-18  
经验问题啊
7 楼 抢街饭 2011-02-18  
最近我也在看这东西
一个是Contains(object key),一个是ContainsKey(object key),就不知道用哪个才对,后来查了资料才知道,其实这两个方法实现的功能是一样的,都是判断哈希表中是否包含指定的键。

它们的源码是这样的:

public virtual bool Contains(object key)
{
    return this.ContainsKey(key);
}
6 楼 mencius 2011-02-18  
hashtable不是已经不推荐使用了吗

相关推荐

Global site tag (gtag.js) - Google Analytics