我承认这听起来有点疯狂,但要解释一下我的意思:
我有一个Collection
(例如 HashSet)包含几个相当慢的初始化对象,我想看看是否Collection
已经包含一个特定的对象。让我们Vector3d
作为一个例子(我知道初始化并不昂贵)。
所以Collection
包含:
Vector3d(1,1,1)
Vector3d(2,1,1)
Vector3d(3,1,1)
我想问一个Collection
问题“是否Collection
包含 a Vector3d
with x=2
, y=1
and z=1
(即我已经知道该.contains()
方法将针对的数据)。所以我可以创建一个新的Vector3d(2,1,1)
然后使用.contains()
它但是正如我所说的对象初始化很慢,或者我可以运行整个Collection
手动检查(这就是我现在正在做的事情)但是那(据我所知)比.contains()
它不使用哈希要慢。有没有更好的方法来做到这一点?
有问题的对象是可变的,但该equals
方法所基于的数据不是。(在我的情况下,它们是 x、y、z 坐标处的块,块的内容可能会改变,但 x、y、z 坐标不会)