比较java集合中的所有唯一对
我有一个类型为比较java集合中的所有唯一对,java,Java,我有一个类型为collection的集合。现在,我想对这个系列中每一双可能的鞋都做些什么,我不想重复这一双。我想的一个解决方案是从集合中生成一个多重映射,然后合并所有唯一的对,但似乎我们也不能在映射中使用索引虎钳元素,我指的是像get(I)这样的东西 for(int i=0;i我不完全清楚这里的类型,但我要创建一个名为UnorderedPair)的类: class UnorderedPair { Object a; // or whatever type should go here O
collection
的集合。现在,我想对这个系列中每一双可能的鞋都做些什么,我不想重复这一双。我想的一个解决方案是从集合中生成一个多重映射,然后合并所有唯一的对,但似乎我们也不能在映射中使用索引虎钳元素,我指的是像get(I)这样的东西
for(int i=0;i我不完全清楚这里的类型,但我要创建一个名为UnorderedPair
)的类:
class UnorderedPair {
Object a; // or whatever type should go here
Object b;
public int hashCode() { return a.hashCode() + b.hashCode(); }
public boolean equals(Object o) {
if (o instanceof UnorderedPair) {
UnorderedPair other = (UnorderedPair) o;
return (a.equals(other.a) && b.equals(other.b))
|| (a.equals(other.b) && b.equals(other.a));
}
return false;
}
}
然后,您只需使用集合
来跟踪已经看到的对:
Set<UnorderedPair> seen = new HashSet<UnorderedPair>();
...look at a and b...
UnorderedPair p = new UnorderedPair(a, b); // or a factory would be nicer
if(seen.add(p)) {
// this is a new pair
doThingWith(a, b);
}
Set seen=new HashSet();
…看看a和b。。。
无序对p=新的无序对(a,b);//或者工厂会更好
如果(见添加(p)){
//这是一双新的
与(a,b)相关;
}
等等。a和b是同一类型的吗?
Set<UnorderedPair> seen = new HashSet<UnorderedPair>();
...look at a and b...
UnorderedPair p = new UnorderedPair(a, b); // or a factory would be nicer
if(seen.add(p)) {
// this is a new pair
doThingWith(a, b);
}