package network; import java.awt.Point; public class Link { private Point p1, p2; public Link(Point p1, Point p2) { this.p1 = p1; this.p2 = p2; } public Point p1() { return (Point)p1.clone(); } public Point p2() { return (Point)p2.clone(); } public double length() { return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2)); } public String toString() { return "Link between (" + p1.x + ", " + p1.y + ") and (" + p2.x + ", " + p2.y + ")"; } public boolean equals(Object o) { if (! (o instanceof Link)) return false; Link l = (Link) o; if (p1.equals(l.p1)) return p2.equals(l.p2); else return p1.equals(l.p2) && p2.equals(l.p1); } public int hashCode() { // Don't use Objects.hash(p1, p2) !!! return p1.hashCode() + p2.hashCode(); } }