我的程序實現了Product
類,其對象包含以下實例變量:name
,priority
,price
和amount
。決定使用類比或比較器
我有我需要的LinkedList
做任何其他操作之前排序Product
的LinkedList
對象。
我想先列出優先順序(從最低到最高)。如果優先級相同,則查看價格(從最低到最高),然後查看名稱(字母順序)。
我已經做了大量的關於Collections.sort
,Comparable
和Comparator
的閱讀。我相信我需要使用Comparable
接口並實施compareTo
方法。我的想法是,因爲priority
,price
和name
都具有「自然」排序,所以使用Comparable
更有意義。
public class Product extends ProductBase implements PrintInterface, Comparable<Product>{
private String name;
private int priority;
private int cents;
private int quantity;
// setters and getters
/**
* Compare current Product object with compareToThis
* return 0 if priority, price and name are the same for both
* return -1 if current Product is less than compareToThis
* return 1 if current Product is greater than compareToThis
*/
@override
public int compareTo(Product compareToThis)
}
然後,當我想我的排序LinkedList的我就叫Collections.sort(LinkedList)
。在我開始編寫代碼之前,你能告訴我我是否錯過或忘記了任何東西嗎?
** * ** * ** * ****UPDATE* ** * ** * ** * * * * ** * ** * ** * ** * ** * ** *
我剛剛創建了一個名爲ProductComparator用比較方法單獨的類。
這是LinkedList類的一部分。這
import java.util.Collections;
public class LinkedList {
private ListNode head;
public LinkedList() {
head = null;
}
// this method will sort the LinkedList using a ProductComparator
public void sortList() {
ListNode position = head;
if (position != null) {
Collections.sort(this, new ProductComparator());
}
}
// ListNode inner class
private class ListNode {
private Product item;
private ListNode link;
// constructor
public ListNode(Product newItem, ListNode newLink) {
item= newItem;
link = newLink;
}
}
}
我從IDE收到以下錯誤,當我編譯。
類型集合中的方法sort(List,Comparator)不適用於參數(LinkedList,ProductComparator)。
有沒有人知道我爲什麼得到這個錯誤,並可以指出我在正確的方向來解決它?
更新了您的問題:您是否已在ProductComparator中正確實施了Comparator? –