日期:2014-05-20  浏览次数:20552 次

请教一个java的map问题
我期望的输出是:one翻译:一
two翻译:二
three翻译:三
但实际情况是two翻译:二
one翻译:一
three翻译:三
源代码如下:请帮忙看下,多谢!


Java code

import java.util.*;
public class Ex20{
    public static void main(String[] args){
        String[] en={"one","two","three"};
        String[] ch={"一","二","三"};
        Map<String,String> map = new HashMap<String, String>();
        for(int i=0;i<en.length;++i){
            map.put(en[i], ch[i]);
        }
        for(Map.Entry<String, String> obj:map.entrySet()){
        System.out.println(obj.getKey()+"翻译:"+obj.getValue());
        }
    }
}



------解决方案--------------------
HashMap是无序的。
应该用是LinkedHashMap.
这个是按顺序。
或者用TreeMap进行排序。
------解决方案--------------------
如果是用TreeMap按你说的one two three 排序要自定义规则,而且这个规则不好定。
直接用LinkedHashMap,插入时按插入顺序就固定了位置。