コンパレータと同等のインタフェースの違いについて勉強しています。Comparable:compareToを使用してさまざまなパラメータでオブジェクトを比較します。
他のサイトでも、stackoverflow上でも、さまざまなフィールドをソートする必要があるときにComparatorを使用したことが言及されています。
今私は、上記のプログラムは、価格に続いサイズに最初の並べ替えに私たちを助け、この
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
class HDTV implements Comparable<HDTV> {
private int size;
private String brand;
private int price;
public HDTV(int size, String brand, int price) {
this.size = size;
this.brand = brand;
this.price = price;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
@Override
public int compareTo(HDTV tv) {
if (this.getSize() > tv.getSize())
return 1;
else if (this.getSize() < tv.getSize())
return -1;
else if (this.getPrice() > tv.getPrice())
return 1;
else if (this.getPrice() < tv.getPrice())
return -1;
else
return 0;
}
}
public class Test {
public static void main(String[] args) {
HDTV tv1 = new HDTV(60, "Samsung", 30000);
HDTV tv2 = new HDTV(60, "Sony", 20000);
HDTV tv3 = new HDTV(50, "LG", 20000);
List<HDTV> l = new ArrayList<>();
l.add(tv1);
l.add(tv2);
l.add(tv3);
Collections.sort(l);
Iterator it = l.iterator();
while (it.hasNext())
System.out.println(((HDTV)it.next()).getBrand());
if (tv1.compareTo(tv2) > 0) {
System.out.println(tv1.getBrand() + " is better.");
} else {
System.out.println(tv2.getBrand() + " is better.");
}
}
}
のようにComparableを使用していますが、我々はまた、同等で2つのパラメータを使用して並べ替えることができますを意味します。(である私の理解あたりとして違う)。
このコードは間違っているかもしれませんが、私はそれを理解することができません。
私は予想通りの注文をしています。
疑問を明確にするのを手伝ってください。
あなたは_「私は期待順序を取得しています」_書いた - あなたが期待される順序を取得している場合、問題は何ですか? –
ゲッターとセッターの間にコンストラクターを置くのはちょっと変です。それは一般的に最初に置かれます。 – Andreas
最初のポイントhttp://www.javatpoint.com/difference-between-comparable-and-comparator 、それは間違っているを参照してください?それを変更 – sparsh610