TreeMap<K,V> 映射的使用 TreeMap 排序

来源:互联网 发布:水电费软件 编辑:程序博客网 时间:2024/06/06 19:02

需求 :会员计划   会员等级  先按照 会员计划的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>(){                              publicint 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);}}


0 0
原创粉丝点击