2012-10-11 111 views
0

我遇到此問題,我有一個PiorityBlockingQueue來對其中的項進行排序。用戶可以對要添加到隊列中的項目進行排序。無法在實現比較器的類中調用自定義方法

我被卡住的那個人正試圖通過Item最常見的排列順序排隊。

比較的選擇是在MyQueue的構造函數中確定的。但是,計數(例如,低,中,高)並沒有確定,直到後來。確定後,我想從ItemComparator調用update(String lst)方法更新hashmap,以便排序正確。

所以我的問題是我不能調用該方法。我知道我錯過了一些東西,但我無法弄清楚。任何幫助?也許有比我現在做的更好的設計?

public class ItemComparator implements Comparator<Item> 
    {   
     public void update(String lst){ 
      test = lst; 
     } 

     public int compare(Item o1, Item o2) { 
      HashMap<String,Integer> priority = new HashMap<>(); 
      priority.put("LOW", 1); 
      priority.put("MEDIUM", 2); 
      priority.put("HIGH", 3); 

      if (priority.get(o1.getPriority()) > priority.get(o2.getPriority())) { 
       return -1; 
      } 
      if (priority.get(o1.getPriority()) < priority.get(o2.getPriority())) { 
       return 1; 
      } 
      return 0; 
     }  
    } 

此聲明不會從此類中工作comparator.update(aString);

public class MyQueue implements AQueue{ 

    private Comparator<Ticket> comparator; 
    private PriorityBlockingQueue<Ticket> listOfTickets; 
    private String policy; 

    BlockingQImpl(String processingPolicy) throws InvalidDataException { 
     setPolicy(processingPolicy.toUpperCase()); 
     setComparator(policy); 
    } 

    private void setComparator(String policy) throws InvalidDataException { 
     if (policy.equals("THIS")) { 
      comparator = new ItemComparator(countString); 
     } 
     listOfTickets = new PriorityBlockingQueue<>(10, comparator); 
    } 

    public void addList(int id) { 
     ticks.add(id) 
     comparator.update(aString); 
    } 
} 
+0

其在myQueue中的方法之一,我已經更新,以顯示它 – Dan

+0

你的代碼仍然不看的權利。 'BlockingQImpl'看起來像一個構造函數,但與類名「MyQueue」不匹配。你能確保你發佈正確的代碼嗎?還有錯誤信息。 –

+0

是ItemComparator中的'update'方法。如果是,那麼你可能需要將'private Comparator comparator';'更改爲'private ItemComparator比較器;'。 –

回答

0

我覺得你的問題是編譯錯誤comparator.update(aString);對不對?

這是因爲你已經聲明comparatorComparator<Ticket>,這意味着,你是「看到」它作爲一個Comparator,並在Comparator,沒有update()方法。

你應該把它聲明爲ItemComparator

private ItemComparator comparator; 
相關問題