我有一组 N 个点,我想找到位于一条直线上的最大点数。
我用每对点创建了 Line2D 对象。显然,某些 Line2D 对象将具有相同的斜率和截距以使点共线。现在我想创建一种哈希表来存储具有相同斜率和截距的线的计数器。
int x1 = 1;
int y1 = 1;
int x2 = 2;
int y2 = 2;
int x3 = 3;
int y3 = 3;
Line2D line1 = new Line2D.Double(x1, y1, x2, y2);
Line2D line2 = new Line2D.Double(x2, y2, x3, y3);
hashMap.put(line1, 1);
显然,如果我将 line2 放在 hashMap 中,它将转到另一个。我怎样才能做到这一点,因为两条线都相同,所以计数增加 1?
最佳答案
您可以创建一个包含斜率和截距值的新类。它应该有一个 equals 方法和 hashcode 方法,允许在定义的参数 epsilon 值内进行等价,以允许功能浮点相等。然后你可以使用它作为 HashMap 的键。该值将是您的 Line2D 或点对的 ArrayList。
关于java - 在带有 HashMap 的 Java 中使用 Line2D,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25635608/