Birden çok özelliği benzer sırayla karşılaştırırken, yalnızca ilkini karşılaştırırsınız. Eğer aynıysa, o zaman ikincisini karşılaştırırsın. Ve eğer onlar aynıysa, o zaman üçüncü ile karşılaştırırsınız.
Eğer java.awt.Point
kullandığınız varsayarsak, böyle yapmak:
class Circle implements Comparable<Circle> {
private Point point;
private double radius;
// ... code ...
@Override
public int compareTo(Circle that) {
int cmp = Double.compare(this.radius, that.radius);
if (cmp == 0)
cmp = Double.compare(this.point.getX(), that.point.getX());
if (cmp == 0)
cmp = Double.compare(this.point.getY(), that.point.getY());
return cmp;
}
// ... code ...
}
Eğer 3 çevreleri sıralamak bir diziye koyun ve diziyi sıralamak gerekirse:
Circle[] circles = { new Circle(...),
new Circle(...),
new Circle(...) };
Arrays.sort(circles);
You' hala iki nesneyi karşılaştırıyor. Karşılaştırma basitçe özelliklerinin üçünü içerir. – Savior
Karşılaştırmada çok fazla şey yaptığınızdan emin olabilirsiniz. Sadece orada iki nesneyi karşılaştırın. Seni doğru anlarsam başka bir şey yapmak yanıltıcıdır. – ChiefTwoPencils
"Circle" sınıfınızda "Karşılaştırılabilir" öğesini uygulayabilir ve kendi "compareTo" yönteminizi tanımlayabilirsiniz. –
Logan