Document Snapshot中的hashcode有什么用?

What is the use of hashcode in Document Snapshot?

我在 firebase 的 DocumentSnapshot class 中注意到这段代码:

@Override
public int hashCode() {
    int hash = firestore.hashCode();
    hash = hash * 31 + key.hashCode();
    hash = hash * 31 + (doc != null ? doc.getKey().hashCode() : 0);
    hash = hash * 31 + (doc != null ? doc.getData().hashCode() : 0);
    hash = hash * 31 + metadata.hashCode();
    return hash;
}

现在,即使我获取相同的文档,我也会得到不同的哈希码。如果它们不同,这有什么用?我得到它的 class 就像 String。当给它相同的字符串时,它会给出相同的哈希码。那为什么 DocumentSnapshot 不同?

此方法不能用作识别两个文档快照是否相同的方法。它实际上并不是开发人员直接使用的 API 界面的一部分。你可能应该完全忽略它,除非你有特定的问题。

这里的 hashCode 与 Object 的任何子类将用于 hashCode 的目的相同。来自 API 文档:

This method is supported for the benefit of hash tables such as those provided by HashMap.

此实现让 DocumentSnapshot 对象与 HashMap 或其他需要 hashCode 实现的集合一起工作。您可以相信它工作正常。如果您认为此处存在可以复制的错误或问题,请根据您的观察在 GitHub 上提交错误。