怎么将HASHMAP里的内容,按要求进行排序

public class Test{

public static void main(String[] args) {
    //map里放的是姓名,值是出现在的次数
    Map<String, Integer> map = new HashMap<String, Integer>();
    map.put("lisi", 5);
    map.put("lisi1", 1);
    map.put("lisi2", 3);
    map.put("lisi3", 9);
}
//进行排序,排序之后的输出

// map.put("lisi1", 1);
// map.put("lisi2", 3);
// map.put("lisi", 5);
// map.put("lisi3", 9);

}

你说的按要求排序,应该是有一些自定义规则排序吧,假如要通过值来排序可以用以下方法:

[code="java"]
public static void main(String[] args) {
Map map = new HashMap();

    map.put("lisi", 5); 
    map.put("lisi1", 1); 
    map.put("lisi2", 3); 
    map.put("lisi3", 9); 

    List<Map.Entry<String, Integer>> infoIds = new ArrayList<Map.Entry<String, Integer>>(
            map.entrySet());
    System.out.println("--------------排序前--------------");
    for (int i = 0; i < infoIds.size(); i++) {
        String id = infoIds.get(i).toString();
        System.out.println(id);
    }
    // 排序
    Collections.sort(infoIds, new Comparator<Map.Entry<String, Integer>>() {
        public int compare(Map.Entry<String, Integer> o1,
                Map.Entry<String, Integer> o2) {
            return ( o1.getValue()-o2.getValue());
        }
    });
    System.out.println("--------------排序后--------------");
    for (int i = 0; i < infoIds.size(); i++) {
        Entry<String,Integer> ent=infoIds.get(i);
        System.out.println(ent.getKey()+"="+ent.getValue());

    }


}

[/code]

用LinkedHashMap就可以了,这个是有序的Map

HashMap 不能排序,可用楼上的方法解决

似乎只有对Key进行排序的,对Value的有吗?

首先要明确一点, HashMap是没有顺序的,
如果一定要用HashMap, 可以参考以下方法, 此处写出思路:

在读取MAP的时候这样做:
1. 反射map去除所有key, 存入List或Array. 注(list操作较方便, 可以直接toArray)
2. 利用Array.sort()方法进行排序.
3. 按排序后的顺序取出key, 然后通过key取Map, 即可获得排序后的Map

简单的代码示例(无验证):

List list = new ArrayList(map.keySet());
Object[] ary = list.toArray();
Arrays.sort(ary);
list = Arrays.asList(ary);
for (Object o : list) {
System.out.println(map.get(o));
}

LinkedHashMap 只能保证插入的顺序 不能排序 AngelAndAngel 的方法很好
sc1333的方法是按key排序 楼主要的是value排序

另外 你可以这样
[code="java"]
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class Test {

public static void main(String[] args) {

    Map<Order, Integer> map = new TreeMap<Order, Integer>();
    map.put(new Order("lisi", 5), 5); 
    map.put(new Order("lisi1", 1), 1); 
    map.put(new Order("lisi2", 3), 3); 
    map.put(new Order("lisi3", 9), 9); 


    Set<Map.Entry<Order, Integer>> set = map.entrySet();
    for (Map.Entry<Order, Integer> entry : set) {
        System.out.print(entry.getKey().key+ "--");
        System.out.println(entry.getValue());
    } 
}

}

class Order implements Comparable {
String key;
int count;

public Order(String key, int count) {
    this.key = key;
    this.count = count;
}

@Override
public int compareTo(Order o) {
    return (count > o.count) ? 1 : count == o.count ? 0 : -1;
}

}
[/code]

不过还有有点多余 没有AngelAndAngel 的方法好