2015-06-21 32 views
1

我寫了這個查詢,我需要返回排序的車輛列表的保留數。我製作了一個出現地圖,並按照從最高到最低的出現次數對它進行了排序。唯一的問題是,我不知道如何從TreeSet中獲得Vehicle如何從TreeSet中分離鍵或值<Map.Entry <key,value>>?

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()); 
} 
+0

請在問題的格式代碼 –

+0

嗯,這是一個方法的名字.... –

+0

也許我不明白這個問題,但讓汽車出門應該是直截了當的。遍歷集合(for Entry <> e:sorted){}'並在每個條目上調用'e.getKey()'。 – rob

回答

1

使用此方法:

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); 
+0

謝謝一大堆,這非常有幫助! – Loaffer

相關問題