我需要一个Java 泛型类来表示任何类型的无序对。同时我看到两个解决方案:
HashSet
存储配对元素Pair
班级,覆盖hashCode
和equals
(使Pair(a, b)
和Pair(b, a)
相等)。 有意义吗?你会建议什么?
答案 0 :(得分:3)
在你的位置,我会推出自己的课程。只要您对仅有两个对象的集合感兴趣,使用HashMap
,HashSet
(顺便说一下,无论如何在内部使用HashMap
)或为任意集合设计的任何其他类{ {3}}浪费资源,增加了不必要的复杂性。
只需使用正确的equals()
和hashCode()
实现创建自己的类。进行contains()
操作,甚至实现Set
接口的部分内容也可能有意义。
一个重要的注意事项:确保您广泛地记录您的类 - 至少指定equals()
是否对包含的对象执行标识或相等比较,以及a的含义是什么null
包含参考...