Wenn ich eine Set
ähnlich wie hier:
Set<node> s=new TreeSet<node>();
class node {
private int x;
private int y;
}
Wäre dies akzeptabel, und da es ein TreeSet ist, würde es auch sortieren?
Wenn ich eine Set
ähnlich wie hier:
Set<node> s=new TreeSet<node>();
class node {
private int x;
private int y;
}
Wäre dies akzeptabel, und da es ein TreeSet ist, würde es auch sortieren?
Es wird nicht in der Lage sein, das Problem ohne Ihre Hilfe zu lösen. Comparable<Node>
und ist für Mengenoperationen erst dann wirklich geeignet, wenn Sie die equals()
y hashCode()
. (Sie müssen nicht haben zu überschreiben equals
y hashCode
para TreeSet
zu arbeiten, aber es wäre sinnvoll, dies zu tun).
Etwa so:
final class Node implements Comparable<Node> {
private final int x;
private final int y;
Node(int x, int y) {
this.x = x;
this.y = y;
}
@Override public boolean equals(Object other) {
if (!(other instanceof Node)) {
return false;
}
Node otherNode = (Node) other;
return x == otherNode.x && y == otherNode.y;
}
@Override public int hashCode() {
return x * 31 + y * 17; // For example...
}
@Override public int compareTo(Node other) {
// As of Java 7, this can be replaced with
// return x != other.x ? Integer.compare(x, other.x)
// : Integer.compare(y, other.y);
if (x < other.x || (x == other.x && y < other.y)) {
return -1;
}
return x == other.x && y == other.y ? 0 : 1;
}
}
(Beachten Sie, dass der Klassenname nach Konvention Node
pas node
.)
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.