使用多个数组并在其中递增对象

时间:2012-10-12 23:40:52

标签: java arrays

假设我有这些课程:

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;
      }
    }
  }

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

1 个答案:

答案 0 :(得分:0)

我/我们必须对你想做的事情做一些假设 - 例如,在你的例子中,'to'值是小的,简单的整数,但我们没有迹象表明所有'to'值都是在那个类别。

我建议为每个'to'值创建一个HashMap条目;索引是一个Integer或一个Float(或一个double),对应于你的'to'条目,该值包含一个int,你可以在每次遇到'to'值时递增。

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