public static Map.Entry[] getSortedHashtableByValue(Map map) {
Set set = map.entrySet();
Map.Entry[] entries = (Map.Entry[])set.toArray(new Map.Entry[set.size()]);
Arrays.sort(entries, new Comparator(){
public int compare(Object arg0, Object arg1){
Long key1 = Long.valueOf(((Map.Entry) arg0).getValue().toString());
Long key2 = Long.valueOf(((Map.Entry) arg1).getValue().toString());
return key1.compareTo(key2);
}
});
return entries;
}
}[/code]作者: 匿名 时间: 2011-7-29 13:41
好办法,学到了。
之前我竟然这样写:[code=java] String str = "aaaaabbbccccddddddddeeeee";
// key保存字符,value保存出现的次数
Map<String, Integer> map = new HashMap<String, Integer>();
for (int i = 0; i <= str.length() - 1; i++) {
String subVal = str.substring(i, 1 + i);
boolean flag = false; // 标示一个字符是否处理过。
for (String key : map.keySet()) {
// 如果有相同的字符 value + 1 否则把字符存入map
if (key.equals(subVal)) {
map.put(key, map.get(key) + 1);
flag = true; // 字符标示为处理过
}
}
// 如果字符没有处理过就在这里处理
if (!flag) {
map.put(subVal, 1);
}
}
Object[] strArray = map.keySet().toArray();
Object temp = null;
for (int i = 0; i < strArray.length; i++) {
for (int j = 1 + i; j < strArray.length; j++) {
if (map.get(strArray[i]) < map.get(strArray[j])) {
temp = strArray[i];
strArray[i] = strArray[j];
strArray[j] = temp;
}
}
}
for (Object object : strArray) {
System.out.println(object + "出现的次数:"+ map.get(object));
}[/code]