我想快速从Java Set中获取与现有对象相同的对象。有没有比迭代所有元素的更快的方法?
这是我的代码:
class A {
int a,b,c,d;
public A(int a, int b, int c, int d) {
this.a = a;
this.b = b;
this.c = c;
this.d = d;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + getOuterType().hashCode();
result = prime * result + a;
result = prime * result + b;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
A other = (A) obj;
if (!getOuterType().equals(other.getOuterType()))
return false;
if (a != other.a)
return false;
if (b != other.b)
return false;
return true;
}
private Main getOuterType() {
return Main.this;
}
}
并在代码中:
void run() {
Set<A> a = new HashSet<>();
a.add(new A(1,2,3,4));
a.add(new A(2,3,4,5));
A b = new A(1,2,3,5);
//How to fetch from set a object equal to object b?
}
是否可以在Groovy中快速完成?
答案 0 :(得分:6)
get
界面中没有java.util.Set
方法。因此,您无法获取条目:)
也许您使用的是错误的数据结构。可能你需要的是java.util.Map
?
答案 1 :(得分:1)
如果你已经有了一个对象,那么从Set中获取它就没有意义了。如果您想检查集合中是否存在http://docs.oracle.com/javase/7/docs/api/java/util/Set.html#contains(java.lang.Object)