黑马程序员技术交流社区

标题: LinkedHashMap 问题 [打印本页]

作者: 沈雷    时间: 2011-8-4 22:36
标题: LinkedHashMap 问题
[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  输出的结果 也是按顺序的呢? 踌躇中
作者: 匿名    时间: 2011-8-4 23:31
你改成下面的就看出不是顺序了[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()方法排列又会发生变化




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