使用Map结构使用特定的object-property进行索引

时间:2015-07-26 12:59:58

标签: java dictionary data-structures graph

我希望在我的Map-structure中使用我的顶点类的integer-id-value作为索引,而不使用并行数据结构。

class Vertex {
    private int v;
    private int label;

    //...
}

我将顶点对象存储在Map<Vertex,ArrayList<Edge>> adjMap

是否可以使用我的Vertex类的v-property作为Map中的索引键?

2 个答案:

答案 0 :(得分:1)

这取决于您正在使用的Map实现。例如,对于HashMap,您可以覆盖equals类的hashCodeVertex,以便在v属性相等时将两个顶点视为相等。

class Vertex {
    private int v;
    private int label;

    public Vertex (int v)
    {
        this.v = v;
    }

    @Override
    public boolean equals (Object o)
    {
        if (!(o instanceof Vertex))
            return false;
        Vertex ov = (Vertex)o;
        return this.v == ov.v;
    }

    @Override
    public int hashCode ()
    {
        return v;
    }
}

现在,要在Map中找到给定v值的值:

adjMap.containKey(new Vertex(v));

答案 1 :(得分:0)

确定。然后,您的usernamesequals应仅使用以下属性v。代码:

hashcode
  

输出:Value :: vertex