Java中的无序对

5
我需要一个Java泛型类来表示任何类型的无序对。与此同时,我看到有两个解决方案:
  • 使用 HashSet 存储一对元素
  • 一个带有覆盖 hashCode equals Pair 类(使 Pair(a, b) Pair(b, a) 相等)。
这样做有意义吗?你会建议什么?

你编写一个“任意类型的无序对容器”的原因是什么? - Andrew Logvinov
2
可能是Java中的C++ Pair<L,R>等价物是什么?的重复问题。 - JB Nizet
3
你可以考虑无序图的边。Edge(v1, v2) 等同于 Edge(v2, v1) - Michael
1
@JBNizet 我对无序对很感兴趣。 - Michael
哎呀,四年了还没有答案。你找到什么了吗? - user1803551
@user1803551 实际上,没有 :( 只是忘记了。 - Michael
1个回答

3

如果是我,我会自己编写一个类。只要您对仅包含两个对象的集合感兴趣,使用 HashMapHashSet(顺便提一下,它内部实际上也使用了 HashMap)或任何其他设计用于任意 基数 集合的类都是浪费资源并增加不必要的复杂性。

只需创建具有适当的 equals()hashCode() 实现的自定义类即可。拥有 contains() 操作,甚至实现 Set 接口的部分内容也可能是有意义的。

重要提示:确保您详细记录您的类 - 至少指定 equals() 是执行包含对象的标识还是相等比较,以及 null 包含引用的含义...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接