黑马程序员技术交流社区

标题: 求助,学习泛型,然后做了个练习,但是结果为什么是这样? [打印本页]

作者: 尚志    时间: 2014-9-10 19:56
标题: 求助,学习泛型,然后做了个练习,但是结果为什么是这样?
public class Number1 {
        public static void main(String[] args){
                Map<String,Integer> mp = new HashMap<String, Integer>();
                mp.put("唐僧", 26);
                //mp.put("孙悟空", 500);
                mp.put("沙僧", 200);
                mp.put("猪八戒", 300);
                mp.put("孙悟空", 500);
                Set<Entry<String,Integer>> entrysets = mp.entrySet();
                for(Entry<String,Integer> entrysset : entrysets){
                        String s = entrysset.getKey();
                        int t = entrysset.getValue();
                        System.out.println(s + ":" + t);
                }
               
        }
}

运行结果

孙悟空:500
唐僧:26
沙僧:200
猪八戒:300

为什么孙悟空首先打印出来??我试了好几次都是这样、、

作者: Fightin黑马    时间: 2014-9-10 21:42
你用的是hashmap 在存储时JVM会计算出一个hash值,根据hash值来确定存储区域,所以存和取的顺序可能会不一样,表明hashmap是存取无序的.想要按照怎么存怎么取可以使用 linkedhashmap
作者: likeermei    时间: 2014-9-10 22:07
Fightin黑马 发表于 2014-9-10 21:42
你用的是hashmap 在存储时JVM会计算出一个hash值,根据hash值来确定存储区域,所以存和取的顺序可能会不一样, ...

正解  顺便问下  你的技术分怎么弄的?
作者: Fightin黑马    时间: 2014-9-10 22:09
likeermei 发表于 2014-9-10 22:07
正解  顺便问下  你的技术分怎么弄的?

参加的论坛活动得到黑马币 然后换了20个技术分,剩下的就是每天刷论坛然后回帖 用黑马币换的
作者: 黄凯旋    时间: 2014-9-10 22:19
根据哈希值排的顺序,所以存取顺序不一定相同
作者: 尚志    时间: 2014-9-11 08:21
Fightin黑马 发表于 2014-9-10 21:42
你用的是hashmap 在存储时JVM会计算出一个hash值,根据hash值来确定存储区域,所以存和取的顺序可能会不一样, ...

奥,明白了、、谢谢
作者: 尚志    时间: 2014-9-11 08:22
黄凯旋 发表于 2014-9-10 22:19
根据哈希值排的顺序,所以存取顺序不一定相同

嗯、、、明白了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2