嗨,我正在使用由 HashMap 支持的 Set 来跟踪我已经在图中遍历了哪些边。我计划通过添加存储在每个边缘中的数据的哈希码的结果来键入集合。
v.getData().hashCode() + wordV.getData().hashCode()
但是,当使用 contains 检查边缘是否在集合中时,这有多可靠?难道我不能假设得到误报吗?有没有办法克服这个?
让我担心的确切说法是:
edgeSet.contains(v.getData().hashCode() + wordV.getData().hashCode())
谢谢!
哦,顺便说一句,我正在使用 Java。
编辑:
我应该在问题中说明这一点。在我的图中,没有边对象,有顶点对象,每个顶点对象都包含更多顶点对象的列表,即边。因此,我想结合您的回答得出的问题是:
我可以使用 Set 来存储对信息的引用而不是对象......吗?即我可以存储为顶点的数据对象添加两个哈希码的结果吗?
编辑2:
我确实在为我的 hashmap 使用 Java 库,我将其声明如下:
Set<Integer> edgeSet = Collections.newSetFromMap(new ConcurrentHashMap<Integer, Boolean>());