ich arbeite an einigen alten Aufgaben, die von meinem Programmierkurs gegeben werden. Ich sollte eine Rectangle-Klasse mit einigen grundlegenden Funktionen und vielen Comparable- und Comparator-Klassen erstellen.eigene compareTo implementieren und Methoden vergleichen
Das ist, was ich schon habe:
public class Rectangle {
private int length, width;
public Rectangle(int length, int width) {
this.length = length;
this.width = width;
}
public int length() {
return length;
}
public int width() {
return width;
}
public int area() {
return length + width;
}
public int perimeter() {
return 2 * length + 2 * width;
}
}
public class RectangleComparable extends Rectangle implements Comparable<RectangleComparable> {
public RectangleComparable(int length, int width) {
super(length, width);
}
@Override
public int compareTo(RectangleComparable r) {
if (this.area() < o.area()) return -1;
else if (this.area > o.area()) return 1;
else return 0;
}
}
public class RectangleComparatorArea implements Comparable<RectangleComparable> {
private int area;
@Override
public int compareTo(RectangleComparable r) {
if (area < r.area()) return -1;
else if (area > r.area()) return 1;
else return 0;
}
}
public class RectangleComparatorPerimeter implements Comparable<RectangleComparable> {
private int perimeter;
@Override
public int compareTo(RectangleComparable r) {
if (perimeter < r.perimeter()) return -1;
else if (perimeter > r.perimeter()) return 1;
else return 0;
}
}
public class ComparableComparator<T> implements java.util.Comparator<T> {
public int compare(T o1, T o2) {
return 0;
}
}
Was Methoden wie .compareTo sind, .equals usw. genannt? Wie, wenn ich etwas
obj1.compareTo(obj2);
wie kann ich obj1 beziehen, wenn ich meine eigene compareTo Methode implementieren?
Auch die ComparableComparator.compare-Methode sollte für Rechtecke und auch andere generische Typen funktionieren, aber ich habe keine Ahnung, wie man das startet.
Was meinen Sie "beziehen sich obj1"? Ich bin verwirrt, was genau du versuchst zu tun. Könnten Sie ein Beispiel geben, wie die Methode verwendet würde? – 4castle
wie die compareTo-Methoden in RectangleComparatorArea. Wenn ich r1.compareTo (r2) verwende, wie kann ich in meiner Methode r1 ansprechen. r2 ist parameterbasiert, aber für r1 habe ich keine Ahnung, wie ich danach in if/else fragen kann. – koin
Sind Sie sicher, dass Sie nicht '' Comparator <...> '' '' '' '' Comparable <...> '' 'mit Ihren verschachtelten Klassen mischen? Es erscheint viel sinnvoller, dass sie das erste implementieren würden. –