如何从 TreeSet<Map.Entry<key,value>> 中分离键或值?
How can I separate a key or a value from a TreeSet<Map.Entry<key,value>>?
我写了这个查询,我需要return一个按预订数量排序的车辆列表。我制作了一个出现图并按出现次数从高到低排序。唯一的问题是,我不知道如何从 TreeSet
.
中获取 Vehicle
s
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);
我写了这个查询,我需要return一个按预订数量排序的车辆列表。我制作了一个出现图并按出现次数从高到低排序。唯一的问题是,我不知道如何从 TreeSet
.
Vehicle
s
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);