本帖最后由 hdsjsql 于 2014-2-20 21:39 编辑
可以先静态定义一个以键排序的TreeMap tm,并在静态代码块中加入元素
然后再定义一个TreeMap tm1 ,指定构造器,以值排序。
再将tm映射关系复制tm1中- import java.util.Comparator;
- import java.util.Iterator;
- import java.util.Set;
- import java.util.TreeMap;
- public class ValueSort {
- //静态定义一个TreeMap,以键的自然顺序排序
- public static TreeMap<String,Integer> tm =
- new TreeMap<String,Integer>();
- static{
- tm.put("lisi",21);
- tm.put("zhangshan",27);
- tm.put("wangwu",15);
- tm.put("zhaoliu",23);
- }
- public static void main(String[] args) {
- //另外定义一个TreeMap,指定比较器,以值排序
- TreeMap<String,Integer> tm1 =
- new TreeMap<String,Integer>(new StuNameComparator());
- //将tm的映射关系全部复制放入tm1中
- tm1.putAll(tm);
- Set<String> keySet = tm1.keySet();
- Iterator<String> it = keySet.iterator();
- while(it.hasNext()){
- String name = it.next();
- Integer age = tm1.get(name);
- System.out.println(name+":"+age);
- }
- }
- //获取tm中的value值
- public static Integer getValue(String name){
- return tm.get(name);
- }
- }
- class StuNameComparator implements Comparator<String>{
- // 定义以值排序的比较器
- @Override
- public int compare(String o1, String o2) {
- Integer x = ValueSort.getValue(o1);
- Integer y = ValueSort.getValue(o2);
- return x.compareTo(y);
- }
- }
复制代码
|