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)
。コードを書き始める前に、何か抜けているか忘れているかどうか教えてもらえますか?
** * ** * ** * ****更新* ** * ** * ** * ** * ** * ** * ** * ** * ** * ** *
比較メソッドを使用して、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 から次のエラーが表示されます。
Collections 型のメソッド sort(List, Comparator) は、引数 (LinkedList、ProductComparator) には適用されません。
このエラーが発生する理由を知っている人はいますか?それを解決するために正しい方向に向けることができますか?