package network3; import java.awt.geom.Point2D; public class Link { private Point2D p1, p2; public Link(Point2D p1, Point2D p2) { this.p1 = p1; this.p2 = p2; } public Point2D p1() { return (Point2D)p1.clone(); } public Point2D p2() { return (Point2D)p2.clone(); } public double length() { return Math.sqrt(Math.pow(p2.getX() - p1.getX(), 2) + Math.pow(p2.getY() - p1.getY(), 2)); } public String toString() { return "Link between (" + p1.getX() + ", " + p1.getY() + ") and (" + p2.getX() + ", " + p2.getY() + ")"; } 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(); } }