1

假设我有这些课程:

public class EdgeI {
  public int from;
  public int to;

  public EdgeI (int a1, int a2) {
    from = a1;
    to = a2;
  }
}

public class VertexI {
  public List neighbors;
  public String info;

  public VertexI (List neig, String str) {
    neighbors = neig;
    info = str;
  }

}

public class vertexWeight {
  public int v;
  public int w;

  public vertexWeight (int vertexNum, int wum) {
    v = vertexNum;
    w = wum;
  }
}

假设我有一个EdgeI包含数字对的对象列表。假设我还有一个VertexI包含空列表和字符串的对象列表。我想将以下内容添加到空列表中:

假设我将此作为我的 EdgeI 对象列表

(1,2), (1,2) (1,2), (1,3), (1,3), (1,4)

对于VertexI列表中的第一个对象,我想添加以下列表

(2,3) (3,2) 

到顶点对象。基本上我想取“to”整数和“to”整数重复的次数,并创建vertexWeight要添加到类列表中的neig对象VertexI。所以neig对于第一个VertexI对象将是vertexWeight对象(2,3)(3,2)。为了实现这一点,我创建了这个到目前为止:

 public void createGraph () {
    int oldFrom = -1;
    int oldTo = -1;
    for(int i = 0; i < edges.size(); i++) {
      EdgeI e = edges.get(i);
      int from = e.from;
      int to = e.to;
      VertexI v = vertices.get(from);
      v.neighbors.add(new vertexWeight (to, 1));
      if (from == oldFrom && to == oldTo){}
        //have to add increment the number 1 in the vertex weight object somehow
      else {
        oldFrom = from;
        oldTo = to;
      }
    }
  }

我需要一些技巧或方法来实现这个吗?我的逻辑可能不正确,这就是我认为最需要帮助的地方。

4

1 回答 1

0

我/我们必须对您想要做的事情做出一些假设——例如,在您的示例中,“to”值是小而简单的整数,但我们没有迹象表明所有“to”值都属于该类别.

我建议为每个“to”值创建一个 HashMap 条目;索引是与您的“to”条目相对应的整数或浮点(或双精度),并且该值包含一个 int,您可以在每次遇到“to”值时递增该值。

如果这不能解决您的问题,也许您可​​以解释更多您需要的内容。

于 2012-10-13T00:21:32.633 回答