Map的值如下(人数为int类型):学校:南京财经大学  人数:4.0
学校:淮阴师范  人数:1.0
学校:东南大学  人数:410.0
学校:中国矿业大学(徐州)  人数:22.0
学校:南京工程  人数:6.0
学校:山东大学  人数:8.0
学校:南京工大  人数:16.0
学校:中国科学技术大学  人数:3.0
学校:江西师范大学  人数:1.0
学校:南京林业大学  人数:2.0
学校:南京理工大学  人数:83.0
学校:中南大学  人数:1.0
学校:中国矿业大学  人数:3.0
学校:山东师大  人数:1.0
学校:西安电子科技大学  人数:1.0
学校:南京航空航天大学  人数:183.0现在需要实现按人数由高到底排序

解决方案 »

  1.   


    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Set;
    import java.util.TreeSet;
    import java.util.Map.Entry;public class Test { public static void main(String[] args) {
    Map<String, Double> map = new HashMap<String, Double>();
    map.put("南京财经大学", 4.0);
    map.put("淮阴师范", 1.0);
    map.put("东南大学", 410.0);
    map.put("中国矿业大学(徐州)", 22.0);
    map.put("南京工程", 6.0);
    map.put("山东大学", 8.0);
    map.put("南京工大", 16.0);
    map.put("中国科学技术大学", 3.0);
    map.put("江西师范大学", 1.0);
    map.put("南京林业大学", 2.0);
    map.put("南京理工大学", 83.0);
    map.put("中南大学", 1.0);
    map.put("中国矿业大学", 3.0);
    map.put("山东师大", 1.0);
    map.put("西安电子科技大学", 1.0);
    map.put("南京航空航天大学", 183.0);
    Set<Entry<String, Double>> set = new TreeSet<Entry<String, Double>>(
    new Comparator<Entry<String, Double>>() {
    @Override
    public int compare(Entry<String, Double> o1, Entry<String, Double> o2) {
    return o2.getValue().compareTo(o1.getValue());
    }
    });
    set.addAll(map.entrySet());
    for (Entry<String, Double> entry : set) {
    System.out.println(entry.getKey() + "\t" + entry.getValue());
    }
    }
    }
      

  2.   

    1楼完美。进来鼓掌good luck
      

  3.   

    路过打酱油对实体实现Comparable接口.再通过Arrays.sort()排序.代码就写了,很简单的.
      

  4.   

    建议将这些学校组织成对象,不要使用 Map下面代码供参考:import java.util.Comparator;
    import java.util.Set;
    import java.util.TreeSet;public class TreeMapTest {    public static void main(String[] args) {        Set<University> universities = new TreeSet<University>();        universities.add(new University("南京财经大学", 4));
            universities.add(new University("淮阴师范", 1));
            universities.add(new University("东南大学", 410));
            universities.add(new University("中国矿业大学(徐州)", 22));
            universities.add(new University("南京工程", 6));
            universities.add(new University("山东大学", 8));
            universities.add(new University("南京工大", 16));
            universities.add(new University("中国科学技术大学", 3));
            universities.add(new University("江西师范大学", 1));
            universities.add(new University("南京林业大学", 2));
            universities.add(new University("南京理工大学", 83));
            universities.add(new University("中南大学", 1));
            universities.add(new University("中国矿业大学", 3));
            universities.add(new University("山东师大", 1));
            universities.add(new University("西安电子科技大学", 1));
            universities.add(new University("南京航空航天大学", 183));        for(University university : universities) {
                System.out.println(university);
            }
        }
    }class University implements Comparable<University>, Comparator<University> {    private String name;
        private int stuNumber;    public University() {
        }    public University(String name, int stuNumber) {
            this.name = name;
            this.stuNumber = stuNumber;
        }    public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getStuNumber() {
            return stuNumber;
        }
        public void setStuNumber(int stuNumber) {
            this.stuNumber = stuNumber;
        }    public int compareTo(University o) {
            return getStuNumber() - o.getStuNumber();
        }    public int compare(University o1, University o2) {
            return o1.compareTo(o2);
        }    // hashCode 和 equals 只使用 name 字段
        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + ((name == null) ? 0 : name.hashCode());
            return result;
        }    public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            University other = (University) obj;
            if (name == null) {
                if (other.name != null)
                    return false;
            } else if (!name.equals(other.name))
                return false;
            return true;
        }    @Override
        public String toString() {
            return "University [name=" + name + ", stuNumber=" + stuNumber + "]";
        }
    }
      

  5.   


    实现的方法有很多,比如7楼,思路打开就行。
    甚至自己实现一个Collection也未尝不可,或是弄个能比较大小的序偶。当然所有方法大同小异。
      

  6.   

    可以试试这个:public class OrderMapByValue { public static void main(String[] args) { HashMap<String, Integer> map = new HashMap<String, Integer>();

    map.put("南京财经大学", 4);
    map.put("淮阴师范", 1);
    map.put("东南大学", 410);
    map.put("中国矿业大学(徐州)", 22);
    map.put("南京工程", 6);
    map.put("山东大学", 8);
    map.put("南京工大", 16);
    map.put("中国科学技术大学", 3);
    map.put("江西师范大学", 1);
    map.put("南京林业大学", 2);
    map.put("南京理工大学", 83);
    map.put("中南大学", 1);
    map.put("中国矿业大学", 3);
    map.put("山东师大", 1);
    map.put("西安电子科技大学", 1);
    map.put("南京航空航天大学", 183); Map sortedMap = sortByValue(map); for (Object key : sortedMap.keySet()) {
    System.out.println("key/value: " + key + "/" + map.get(key));
    } } @SuppressWarnings( { "unchecked" })
    private static Map sortByValue(Map map) {
    List list = new LinkedList(map.entrySet());
    Collections.sort(list, new Comparator() {
    public int compare(Object o1, Object o2) {
    return ((Comparable) ((Map.Entry) (o1)).getValue())
    .compareTo(((Map.Entry) (o2)).getValue());
    }
    }); Map result = new LinkedHashMap();
    for (Iterator it = list.iterator(); it.hasNext();) {
    Map.Entry entry = (Map.Entry) it.next();
    result.put(entry.getKey(), entry.getValue());
    }
    return result;
    }}