黑马程序员技术交流社区
标题:
HashTable ,没那么简单?
[打印本页]
作者:
江公亮
时间:
2013-3-24 21:10
标题:
HashTable ,没那么简单?
本帖最后由 江公亮 于 2013-3-26 17:07 编辑
import java.util.Hashtable;
import java.util.Random;
class count{
int i=1;
public String toString(){
return Integer.toString(i);
}
}
public class UseHashTable {
/**
* @param args
*/
private static final int REPS=100;
public static void main(String[] args) {
// TODO Auto-generated method stub
Hashtable ta=new Hashtable();
Random random =new Random();
int index=1;
while(index<=REPS){
Integer k=new Integer(random.nextInt(10)+1);
if(ta.containsKey(k)){
<FONT color=red>((count)ta.get(k)).i++;</FONT>
}
else{
ta.put(k, new count());
}
index++;
}
System.out.println(ta);
}
}
复制代码
上面那段代码,是在java编程思想中看到的,觉得很好,就copy过来,和大家一起分享。
功能是为了统计1到10,每个数字各出现多次,
我觉得有几点非常重要,1、Hashtable ,只能容纳对象,但不能容纳基本数据类型,
2、一旦需要用HashTable容纳数字,就必须用Integer进行封装,用Integer封装时,
我们便不能再度改变它的值了,这也是要设计一个count类的原因
3、最重要的是,散列表是用对象的散列码(也就是对象的内存地址,作为键值)进行查找的,这样速度很快。但这样也有潜在的危险,当你在两次创建同一样的对象时(有一个对象已经存进HashTable的键中),也就是两个对象的散列码不一致,我们并不能在Hashtable,找到那个一样的对象,这样我们就必须重写Object的hashcode()和equal方法,来使的对象唯一。可以查看Java编程思想226--228
作者:
lucy198921
时间:
2013-3-24 23:25
谢谢分享.
Hashtable就是哈希表,下面这个示例创建了一个数字的哈希表。
它将数字的名称用作键:
Hashtable<String, Integer> numbers = new Hashtable<String, Integer>();
numbers.put("one", 1);
numbers.put("two", 2);
numbers.put("three", 3);
如果要获取一个数字,可以使用以下代码:
Integer n = numbers.get("two");
if (n != null) {
System.out.println("two = " + n);
}
作者:
江公亮
时间:
2013-3-25 10:13
numbers.put("put",1);虽然放的是1,但泛型会自动对1进行封装啊,可能这也是泛型的作用吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2