相关疑难解决方法(0)

比较IEEE浮点数和双精度数是否相等

比较IEEE浮点数和双精度数据的最佳方法是什么?我听说过几种方法,但我想看看社区的想法.

variables floating-point inequality

9
推荐指数
1
解决办法
5077
查看次数

如何使用equals()和hashCode()实现近似几何等式

我想实现一些具有数值鲁棒性的几何算法。

为此,在系统范围delta内使用几何相等性。equals()for点通过使用deltafor近似相等的距离计算来实现。

我希望能够使用常规的Java集合,例如Set。但是我无法提出一个合理的hashCode()实现。

我的猜测是,有效HashSet使用的实现会导致空间边界带有“软”边界。delta到分区边界的距离小于点的点应该能够同时在最多八个(对于3D)相邻区域中分类。点足够近以至于代表它们的距离被认为相等,但是位于分区的不同侧面上的点将被“错误分类”。

这是我无法理解的事情。hashCode()就像将项目放在存储桶中,而单个项目最终在单个存储桶中一样,而我需要将其最多存储在八个中。

什么是合理的解决方案?我在滥用目的hashCode()吗?哪一个仍然是最合理的解决方案hashCode():)

编辑:谢谢,我有一个直觉,这个想法出了点问题,但我不能对此表示怀疑。你说得很清楚

请允许我将问题扩展到:如果我对较慢的HashSet操作没问题(这不是最有效的方法),那么由于没有正确的实现,我可能会hashCode()返回1,这将带来可怕的后果(它涉及几何计算) ),如果我确实实施了equals()降低传递性要求?

编辑我找到了这篇文章,着重介绍了缺少传递性的问题,并且这篇文章这篇文章密切相关。

java hash geometry equality hashcode

2
推荐指数
2
解决办法
240
查看次数