日期:2014-05-18  浏览次数:20772 次

为什么hashSet可以按字母排序,而HashMap不能按键的顺序排序??
package test;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
// import java.util.TreeMap;

public class HashMapTest
{
public static void main(String[] args)
{
HashMap<Integer,String> hm = new HashMap<Integer,String>();
hm.put(1, "liudehua");
hm.put(3, "zhangxueyou");
hm.put(2, "liming");
hm.put(4, "guofucheng");

Iterator<Map.Entry<Integer, String>> it = 
hm.entrySet().iterator();

while(it.hasNext())
{
Map.Entry<Integer, String> m = it.next();
System.out.println(m.getKey()+":"+m.getValue());
// System.out.println(it.next().ge);
}

String str = 
"abcdsafasfdasfasfdasdfasfdsfaf";

Map<Character,Integer> mapCI = new HashMap<Character,Integer>();

for(int i = 1;i<str.length();i++)
{
if(!mapCI.containsKey(str.charAt(i)))
mapCI.put(str.charAt(i), 1);
else
mapCI.put(str.charAt(i),mapCI.get(str.charAt(i))+1);
}

Iterator<Map.Entry<Character, Integer>> it2
= mapCI.entrySet().iterator();

while(it2.hasNext())
{
Map.Entry<Character, Integer> m = it2.next();
System.out.println(m.getKey()+" : " + m.getValue());
}
}
}


输出:
1:liudehua
2:liming
3:zhangxueyou
4:guofucheng
f : 8
d : 5
s : 7
b : 1
c : 1
a : 7

对数字可以排序,但是对字母无法排序 ??

字母的 hashcode 是不是也应该有一个顺序呢 ???

------解决方案--------------------
数字,那是碰巧,LZ试试这组数字:
        HashMap<Integer,String> hm = new HashMap<Integer,String>();
        hm.put(97, "liudehua");
        hm.put(98, "liming");
        hm.put(99, "zhangxueyou");