import java.util.*;
public class HashMapTest {
public static void printElements(Collection c){
Iterator it=c.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
public static void main(String[] args){
HashMap hm=new HashMap();
/*hm.put( "one ", "zhangsan ");
hm.put( "two ", "lisi ");
hm.put( "three ", "wangwu ");*/
hm.put( "1 ", "zhangsan ");
hm.put( "2 ", "lisi ");
hm.put( "3 ", "wangwu ");
//System.out.println(hm.get( "one "));
//System.out.println(hm.get( "two "));
//System.out.println(hm.get( "three "));
/*Set keys=hm.keySet();
System.out.println( "keys: ");
printElements(keys);
Collection values=hm.values();
System.out.println( "values: ");
printElements(values);*/
Set es=hm.entrySet(); //System.out.println(es);
Iterator it = es.iterator();
while(it.hasNext()){
Map.Entry me=(Map.Entry)it.next();
System.out.println(me.getKey()+ ": "+me.getKey());
}
}
}
上面的程序是孙鑫java第六课的一个例子程序,程序中hashmap的put方法如果放进去的key是英文字母酒会按照顺序输出,但是如果是数字就会反序输出(我猜可能是hashCode方法需要重写,但是不知道该怎么重写,如果是这样的话,该怎么重写,如果不是 请指教一下),而且如果是数字的话下面的迭代输出也有问题
正常情况应该是键:值
而传递数字key进取就会输出
3:3
2:2
1:1
只能放30分了,回答正确的等下我再开个帖子给100分,现在赚分去了...
------解决方案--------------------
真辛苦 不仅要赚钱 还得赚分 休息去了!
------解决方案--------------------
hashmap类是散列映射并不保证它的元素顺序.
因此,元素加入散列映射的顺序并不一定是它们被迭代函数读出的顺序.
------解决方案--------------------
楼上正解,碰到这种问题查api。api说不保证顺序,那就是不保证拉
------解决方案--------------------
楼上的楼上,正解。
------解决方案--------------------
HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。
------解决方案--------------------
java编程思想里对这些讲的很清楚的 推荐楼主去看看
------解决方案--------------------
以上都说得没错
如果你多运行几次
看看 结果会每次都不同
当然也有可能相同
------解决方案--------------------
我运行了很多次 都是一样的结果
重启机子运行也是一样的结果
我也知道hash的顺序带随机性 所以向重写hashCode方法
但是不知道怎么下手....
------解决方案--------------------
System.out.println(me.getKey()+ ": "+me.getKey());
老大,你自己打印出来的都是KEY阿!!!
System.out.println(me.getKey()+ ": "+me.getValue());
你第一个问题想问点什么呢
------解决方案--------------------
只能放30分了,回答正确的等下我再开个帖子给100分,现在赚分去了...
________________________________________________________________
怎么赚?每天登录一次,才能赚到 10 分,100 分登录十天每天至少登录一次才够~~
要保证输入与输出的顺序一致的话,要使用 LinkedHashMap 就可以了,在 Map 中仅有这个是按顺序来的。
使用 HashMap 的话,是按照 hashCode 来分布的,没有降序、升序规律可循的。
------解决方案--------------------