class counter{
int i=1;
public String toString(){
return Integer.toString(i);
}
}public class javaIO{
public static void main(String[] args){
Hashtable ht = new Hashtable();
for(int i=0;i<10000;i++){
Integer r = new Integer((int)(Math.random()*20));
if(ht.containsKey(r)){
((counter)ht.get(r)).i++;
}
else{
ht.put(r, new counter());
}
}
System.out.println(ht);
}
}打印:{19=481, 18=509, 17=532, 16=518, 15=465, 14=506, 13=474, 12=530, 11=523, 10=446, 9=479, 8=525, 7=498, 6=489, 5=498, 4=496, 3=501, 2=496, 1=489, 0=545}本人理解能力差,没明白像19=481是怎么打印出来的?Hashtable是不是就是一个先进后出的堆栈,通过Counter将要显示的数字转化为String型,但是它是如何凭((counter)ht.get(r)).i++;打印出19=481格式的呢?请指点,谢谢。

解决方案 »

  1.   

    不是((counter)ht.get(r)).i++;打印出来的,是System.out.println(ht); 打印出来的
    System.out.println(ht);  == System.out.println(ht.toString());
    而HashTable的toString根据其所有key打印出key=value
      

  2.   

    Hashtable
    Stack
    楼主去理解一下
      

  3.   

    HashTable是以Key-Value形式存放对象的集合
    你尝试的减少i的大小,在看看.