问下java里Hashtable的用法
java吧
全部回复
仅看楼主
level 1
heroes999 楼主

假设有类 Aclass A{int a;int b;String dev;}我想以a&b为索引值,将A的实例插入Hashtable,应该怎么写呢?
2011年07月04日 08点07分 1
level 13
Hashtable hash = new Hashtable();
A data = new A();
hash.put(new Integer(a&b), data);
2011年07月04日 08点07分 2
level 1
heroes999 楼主
如果有几个类A的实例的a&b值相同,Hashtable是如何解决冲突的呢?
2011年07月04日 08点07分 3
level 13
不能让两个数据项具有相同的关键字,这种情况不允许。
2011年07月04日 08点07分 4
level 1
heroes999 楼主
我试了下,貌似java不报错,不过前面的值会被覆盖掉;
也就是说Hashtable本身没有解决冲突的能力?
2011年07月04日 08点07分 5
level 13
中文Java API的"在发生'哈希冲突'的情况下,单个桶会存储多个条目,这些条目必须按顺序搜索"
2011年07月04日 08点07分 6
level 13
看来和delphi的THashedStringList差不多。
2011年07月04日 08点07分 7
level 1
heroes999 楼主
哦,我明白了,就是相当于数组+链表的结构吧?
还有个问题是,怎么取出这些个条目?貌似hashtable.get只能取出第一个。
2011年07月04日 08点07分 8
level 13
[88]这个我也不清楚了,差了下,么找见
2011年07月04日 09点07分 9
level 13
Java API文档是那样写的“在发生“哈希冲突”的情况下,单个桶会存储多个条目,这些条目必须按顺序搜索”,不过实际输出对象值来看,好像是被覆盖了。
2011年07月04日 09点07分 10
level 13
不管是用System.out.println输出这个对象的值,还是输出size,都是旧值被覆盖的结果。
2011年07月04日 09点07分 11
level 13
[88]确实被覆盖了

2011年07月04日 09点07分 12
level 13
[揉脸]
2011年07月04日 09点07分 13
1