A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

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

6 个回复

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

正解  顺便问下  你的技术分怎么弄的?
回复 使用道具 举报
likeermei 发表于 2014-9-10 22:07
正解  顺便问下  你的技术分怎么弄的?

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

奥,明白了、、谢谢
回复 使用道具 举报
尚志 中级黑马 2014-9-11 08:22:56
7#
黄凯旋 发表于 2014-9-10 22:19
根据哈希值排的顺序,所以存取顺序不一定相同

嗯、、、明白了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马