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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 沈雷 黑马帝   /  2011-8-4 22:36  /  2049 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

[code=java]import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;



import org.junit.Test;


public class Other{

@Test
public void test3() throws Exception {
        Map<Integer, String> map = new HashMap<Integer, String>();
        //Map<Integer, String> map = new LinkedHashMap<Integer, String>();
        map.put(1, "aa");
        map.put(2, "bb");
        map.put(3, "cc");
        map.put(4, "dd");
        map.put(5, "ee");
        map.put(6, "ff");
        map.put(7, "gg");
        map.put(8, "hh");
        map.put(9, "ii");
        map.put(10, "jj");
        map.put(11, "kk");
        map.put(12, "ll");
        map.put(13, "mm");
        map.put(14, "nn");
        map.put(15, "oo");
        map.put(16, "oo");
       
        Set<Map.Entry<Integer,String>> set = map.entrySet();
        Iterator<Map.Entry<Integer,String>> iterator = set.iterator();
        while(iterator.hasNext()){
                Map.Entry<Integer,String> entry = iterator.next();
                int key = entry.getKey();
                String value = entry.getValue();
                System.out.println(key + " : " + value);
        }
}

}[/code]为什么 不用LinkedHashMap  输出的结果 也是按顺序的呢? 踌躇中

1 个回复

倒序浏览
黑马网友  发表于 2011-8-4 23:31:48
沙发
你改成下面的就看出不是顺序了[code] map.put("1", "aa");
        map.put("2", "bb");
        map.put("3", "cc");
        map.put("4", "dd");
        map.put("5", "ee");
        map.put("6", "ff");
        map.put("7", "gg");[/code]实际上HashMap输出是按照HashCode 排序,是一种莫名其妙的顺序。  你的key值   123456789按照默认hashcode的算法刚好是排列在一起的,所以输出看起来好像是按照顺序,而字符串就不同了。还有如果你重写hashcode()方法排列又会发生变化
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马