我想知道我应该为此目的使用什么样的集合:
要求
<value1,value2>
<value1,value2>
等于<value2,value1>
这里最好用什么?
答案 0 :(得分:10)
使用任何Set(例如HashSet)。创建一个对象来表示你的元组并实现hashcode并正确等于。
答案 1 :(得分:2)
使用equals和hashCode实现您自己的元组课程,如下所述,然后使用Set:
public class Tuple<T> {
T v1;
T v2;
@override
public boolean equals(Object o) {
if (o == null) {
return false;
}
if (o instanceof Tuple) {
return (v1.equals(o.v1) && v2.equals(o.v2))
|| (v1.equals(o.v2) && v2.equals(o.v1));
}
return false;
}
@override
public int hashCode() {
// must produce a.hashCode() == b.hashCode() if a.equals(b)
// example below may or may not work for your concrete equals()
return v1.hashCode() ^ v2.hashCode();
}
}
答案 2 :(得分:1)
Set似乎符合您的条件。 Set必须包含另一个集合或包含这两个值的自定义对象。