• 实现对存放了Map集合的ArrayList的排序(按照map中某个字段比较)


    package com.vtstar.sct.desktop.clients.FeedingLine21.swingUI.demos;

    import java.util.ArrayList;
    import java.util.Date;
    import java.util.Map;
    import java.util.TreeSet;

    /**
    * Created by xuming on 2018/1/29.
    * 实现对存放了Map的ArrayList的排序。(规则是按照map中的字段)
    * 调用:
    * ArrayList<Map<String,Object>> sortList = new SortMapsByMapSomeField().getSortList(乱序的List);
    */
    public class SortMapsByMapSomeField implements Comparable<SortMapsByMapSomeField>{
    private Map<String,Object> map;

    public SortMapsByMapSomeField(){
    }

    public SortMapsByMapSomeField(Map<String,Object> map){
    this.map = map;
    }

    //本例中按照map中的一个Date类型的字段planDatefrom排序
    @Override
    public int compareTo(SortMapsByMapSomeField objMap) {
    Date thisDate = (Date) this.map.get("planDatefrom");
    Date objDate = (Date)objMap.map.get("planDatefrom");
    if(thisDate.after(objDate)){
    return 1;
    }else{
    return -1;
    }
    }

    private Map<String,Object> getMap(){
    return this.map;
    }

    /******************
    * 接收一个ArrayList<Map<String,Object>> 按照其中的map中的某一个字段对该list排序。
    * 返回一个有序的ArrayList<Map<String,Object>>
    */
    public ArrayList<Map<String,Object>> getSortList(ArrayList<Map<String,Object>> maps){
    ArrayList<SortMapsByMapSomeField> sortMapsLists = mapToSortTreeSet(maps);
    TreeSet<SortMapsByMapSomeField> sortMaps = new TreeSet<>();
    for(SortMapsByMapSomeField map : sortMapsLists){
    sortMaps.add(map);
    }
    ArrayList<Map<String,Object>> sorList = sortMapToMap(sortMaps);
    return sorList;
    }

    private ArrayList<SortMapsByMapSomeField> mapToSortTreeSet(ArrayList<Map<String,Object>> maps){
    ArrayList<SortMapsByMapSomeField> list = new ArrayList<>();
    for(Map map :maps){
    list.add(new SortMapsByMapSomeField(map));
    }
    return list;
    }

    private ArrayList<Map<String,Object>> sortMapToMap(TreeSet<SortMapsByMapSomeField> sortMaps){
    ArrayList<Map<String,Object>> list = new ArrayList<>();
    for(SortMapsByMapSomeField sortMap : sortMaps){
    list.add(sortMap.getMap());
    }
    return list;
    }
    }
  • 相关阅读:
    codeforces 466D
    codeforces 360B
    codeforces 383D
    codeforces 679B
    codeforces 571B
    codeforces 494B
    CodeForces 660D Number of Parallelograms(n个点所能组成的最多平行四边形数量)
    算法竞赛模板 最短路
    算法竞赛模板 string中substr函数的运用
    HDOJ 1269 迷宫城堡(tarjan模板题)
  • 原文地址:https://www.cnblogs.com/Xmingzi/p/8378512.html
Copyright © 2020-2023  润新知