需求 :会员计划 会员等级 先按照 会员计划的listorder 排序 再按照会员等级的listorder排序
排序 获取最高的 获得最高级别的卡 最高会员计划 ListOrder 最高会员等级 listOrder 最高卡号 ORDER BY obj.id DESC
public class Sort62 {
public static void main(String[] args) {
Map<CardLevel,CardType> map = new TreeMap<CardLevel,CardType>(
//构造一个新的、空的树映射,该映射根据给定比较器进行排序。
(Comparator<? super CardLevel>) new Comparator<CardLevel>(){
public int compare(CardLevel or1, CardLevel or2) {
return or1.getCode().compareTo(or2.getCode());
}
} );
//如果使用 Map<CardLevel,CardType> map = new HashMap<CardLevel,CardType>();
Sort62 m2 = new Sort62();
for(int i=0;i<1000;i++){
m2.add_Type_Level(map,new CardType(1,"KT0"+i,1000-i), new CardLevel(1,"KT0-0"+i,i));
}
//这里将map.entrySet()转换成list
List<Map.Entry<CardLevel,CardType>> list = new ArrayList<Map.Entry<CardLevel,CardType>>(map.entrySet());
//然后通过比较器来实现排序
//根据会员等级的 listOrder 排序
long startTime=System.nanoTime();
Collections.sort(list,new Comparator<Map.Entry<CardLevel,CardType>>() {
//升序排序
public int compare(Entry<CardLevel,CardType> o1,
Entry<CardLevel,CardType> o2) {
return o2.getKey().getListOrdey()-(o1.getKey().getListOrdey());
}
});
//根据会员计划的 listOrder 排序
Collections.sort(list,new Comparator<Map.Entry<CardLevel,CardType>>() {
//升序排序
public int compare(Entry<CardLevel,CardType> o1,
Entry<CardLevel,CardType> o2) {
return o2.getValue().getListOrdey()-(o1.getValue().getListOrdey());
}
});
long endTime=System.nanoTime();
System.out.println("程序运行时间");
System.out.println(String.format("%,d",(endTime-startTime)));
System.out.println("长度是------- :"+list.size());
for(Map.Entry<CardLevel,CardType> mapping:list){
System.out.println(mapping.getKey().getCode()+" :"+mapping.getKey().getListOrdey()
+ " " + mapping.getValue().getCode()+" :"+mapping.getValue().getListOrdey());
}
}
public void add_Type_Level(Map<CardLevel,CardType> map,CardType ct,CardLevel cl){
map.put(cl, ct);
}
}