java - 在带有 HashMap 的 Java 中使用 Line2D

标签 java hashmap

我有一组 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/

相关文章:

c - 如何设计一个不使用这么多内存的哈希表?

java - JSP访问中的HashMap<HashMap<Integer, Integer>, String>

kotlin - 有没有办法让函数在从 map 查找时不返回 null

java - 如何格式化或解析 SOAP 原始对象

java - Power/Mockito 忽略引用更新

java - OkHttp 与 GzipRequestInterceptor 导致来自 Jetty 服务器的 400 Bad Request

java - 在这种情况下,ConcurrentHashMap 和 Synchronized Hash Map 哪个更好?

java - 安装结束时出现install4j : How to execute command line java -jar filename. jar

java - 如何逐步运行@RunWith(Cucumber.class)

go - 无法使用 if val 从 Golang 中的 map[time.Time]Measure 获取值,ok := mapMeasures[ts]; ok {}