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のリストに追加するオブジェクトを作成したいと考えています。したがって、最初のオブジェクトはオブジェクトと. これを実装するために、これまでに作成しました:neigVertexIneigVertexIvertexWeight(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' エントリに対応する Integer または Float (または double) のいずれかであり、値は、'to' 値が検出されるたびにインクリメントできる int を保持します。

それでも問題が解決しない場合は、必要なことをもっと説明できるかもしれません。

于 2012-10-13T00:21:32.633 に答える