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.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现在需要实现按人数由高到底排序
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());
}
}
}
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 + "]";
}
}
实现的方法有很多,比如7楼,思路打开就行。
甚至自己实现一个Collection也未尝不可,或是弄个能比较大小的序偶。当然所有方法大同小异。
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;
}}