public static void main(String[] args){ TreeMap<Entry<String,String>,String> tree = new TreeMap<Entry<String,String>,String>(new Comparator<Entry<String,String>>(){
/** * 实现的compare方法,比较利用了String的compareTo, * 如果V之间比较返回0,则比较K的值,如果两个都相等的时候, * 在插入的时候视为重复的key值,将只会插入一个 */ @Override public int compare(Entry<String, String> o1, Entry<String, String> o2) { int result = o1.getValue().compareTo(o2.getValue()); if(result != 0){ return result; }else { return o1.getKey().compareTo(o2.getValue()); } }
}){ /** * */ private static final long serialVersionUID = 1L; /** * 重写的toString方法,方便查看结果! */ @Override public String toString(){ return super.toString().replaceAll("[{}]", "") .replaceAll(",", "\n").replaceAll("=", "\t"); } };
<("key1", "value2"),"a">,
这东西可不是HashMap<<HashMap<key,value>,value2> 哦
应该是HashMap<<Entry<key,value>,value2>才对
HashMap<key,value>可能有很多这样的键值对的,要按哪个排序呢?
外map的key value不需要考虑吗 如果是这样的话用compare可以
package com.test;import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;public class TreeMapSort {
public static void main(String[] args){
TreeMap<Entry<String,String>,String> tree =
new TreeMap<Entry<String,String>,String>(new Comparator<Entry<String,String>>(){
/**
* 实现的compare方法,比较利用了String的compareTo,
* 如果V之间比较返回0,则比较K的值,如果两个都相等的时候,
* 在插入的时候视为重复的key值,将只会插入一个
*/
@Override
public int compare(Entry<String, String> o1,
Entry<String, String> o2) {
int result = o1.getValue().compareTo(o2.getValue());
if(result != 0){
return result;
}else {
return o1.getKey().compareTo(o2.getValue());
}
}
}){
/**
*
*/
private static final long serialVersionUID = 1L; /**
* 重写的toString方法,方便查看结果!
*/
@Override
public String toString(){
return super.toString().replaceAll("[{}]", "")
.replaceAll(",", "\n").replaceAll("=", "\t");
}
};
//插入测试数据!-------------------------------------------------------
Map<String,String> map = new HashMap<String,String>();
for(int i=1;i<=10;i++){
map.put("key"+i, "value"+ i%3);
}
int count=1;
for(Entry<String,String> e : map.entrySet()){
tree.put(e, "a"+count);
count++;
}
//测试数据插入完成-----------------------------------------------------
System.out.println(tree);
}
}
前两天写的,根据你的问题,插入了一点测试数据,希望对你有帮助!