繁体   English   中英

如何从TreeSet中分离键或值 <Map.Entry<key,value> &gt;?

[英]How can I separate a key or a value from a TreeSet<Map.Entry<key,value>>?

我写了这个查询,我需要返回按预订数量排序的车辆列表。 我制作了一个出现图,并按从高到低的出现次数对其进行了排序。 唯一的问题是,我不知道如何从TreeSet获取Vehicle

public static void Q_GetAllVehiclesinTraveledReservationsSortedByAmountOfTimesTheyWereReserved(SysData sData){

    HashMap<Vehicle,Integer> occ=new HashMap<Vehicle,Integer>();
    Vehicle veh=null;
    TreeSet<Map.Entry<Vehicle,Integer>> sorted= new TreeSet<>(new Comparator<Map.Entry<Vehicle,Integer>>(){
        @Override
        public int compare(Entry<Vehicle, Integer> o1,
                Entry<Vehicle, Integer> o2) {
                return o1.getValue().compareTo(o2.getValue());
        }
    });
    for(Location loc: sData.getLocations().values()){
        for(Reservation res: loc.getReservations().values()){
            if(res instanceof TraveledReservation){ 
                veh = ((TraveledReservation) res).getTrip().getCar();
                if(occ.containsKey(((TraveledReservation) res).getTrip().getCar())){    
                    int val=occ.get(veh);
                    occ.put(veh, ++val);
                }
                else{
                    occ.put(veh, 1);
                }
            }
        }
    }
    veh=null;
    sorted.addAll(occ.entrySet());
}

使用此方法:

public static List<Vehicle> getVehicles (TreeSet tSet) {
    List<Vehicle> vehicleList = new ArrayList<Vehicle>();
    Iterator itr = tSet.iterator();
    while(itr.hasNext()) {
        Entry<Vehicle, Integer> e = itr.next();
        vehicleList.add(e.getKey());
    }

    return vehicleList;
}

并这样称呼它:

List<Vehicle> vList = getVehicles(sorted);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM