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);
}
}
其在myQueue中的方法之一,我已經更新,以顯示它 – Dan
你的代碼仍然不看的權利。 'BlockingQImpl'看起來像一個構造函數,但與類名「MyQueue」不匹配。你能確保你發佈正確的代碼嗎?還有錯誤信息。 –
是ItemComparator中的'update'方法。如果是,那麼你可能需要將'private Comparator comparator';'更改爲'private ItemComparator比較器;'。 –