Я изучаю различия между компаратором и сопоставимым интерфейсом.Сопоставим: Сравните объект по различным параметрам с помощью 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.");
}
}
}
выше программа поможет нам сортировать по размеру, то по цене, означает, что мы можем отсортировать с помощью двух параметров по сравнимой также. (Как в моем понимании, которое является неправильно).
Да, может быть, этот код неправильный, но я не в состоянии понять это.
Я получаю ожидаемый заказ.
Пожалуйста, помогите мне уточнить мои сомнения.
Вы написали _ «Я получаю ожидаемый заказ» _ - Если вы получаете ожидаемый заказ, то в чем проблема? –
Странно иметь конструктор между геттерами и сеттерами. Обычно это ставится первым. – Andreas
см. Первый пункт http://www.javatpoint.com/difference-between-comparable-and-comparator это неправильно? – sparsh610