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