一组相同的缓冲图像

Identical buffered images in a set

下面的集合应该包含重复项吗?

HashSet<BufferedImage> digitsIncaptcha = new HashSet<>();
digitsIncaptcha.add(digit);

在向集合中添加图像时,我希望那里不会有完全相同的图像,但确实如此。当我将 digitsIncaptcha 的内容保存到磁盘时,出现了相同的情况,即相同的大小、相同的尺寸和相同的逐像素颜色。

因此 BufferedImage 不会覆盖对象 class 中的 hashCode 和 equals 方法,您将在集合中得到重复项。

我个人从未使用过 BufferedImage 实例,但我会创建一个包装器 class,其中包含 BufferedImage 并根据 BufferedImage 中的数据懒惰地计算 hashCode 和 equals 并将其用于复制消除.