如何从Java中的集合中获取特定对象

时间:2013-12-06 17:13:10

标签: java groovy set

我想快速从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中快速完成?

2 个答案:

答案 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)