0

Text File次の行があります

1) 2,3 3,2 4,5

2) 1,3 4,2 6,13

3) 1,2 4,2 5,5

4) 1,5 2,2 3,2 5,4 7,3 6,6

テキスト ファイルの行数はわかっています (つまり 4)。ペア数字 (例: 2、3) は、各行で可変です。一方、ペア数字はプロパティに対応します。

したがって、これらの値を表すために、配列のリンクリストの配列を持つことを計画しています。

私のこの選択の理由は次のとおりです。

1: Since i know the number of lines is 4. So it will be an array.

2: Each line has a variable number of pairs. So, i will have a linked list representation for it.

3: The pair values each represents a property so i will have an array size two for it. One index for each property.

上記の3点を考慮して、私はArray(size 4) of LinkedList of an Array(size 2).

これがJavaでこれをどのように表現したかです(私はJavaが初めてで、それが正しいかどうかまだわからないことを認めなければなりません)。

static ArrayList<Integer[]>[] graph = (ArrayList<Integer[]>[]) new ArrayList[200];

さて、上記のグラフ変数が適切に初期化されていることを考えると、データをどのように入力できるか教えてくれる人がいます。初期化に関するその他のアドバイスや、概念的に問題を 3 つの点で分割した方法があれば、共有してください。

4

3 に答える 3

4

私があなただったら、シンプルにします。次のようなものを使用するだけです

List<List<List<Integer>>>

またはさらに良いのは、内部型用に独自のクラスを作成することです。

List<PairList>

またはそのようなもので、 をPairList拡張 (または含む) しArrayList<Pair>ます。

于 2012-07-22T17:50:20.810 に答える
1

あなたの思考プロセスは理解できますが、(おそらく Java の経験不足が原因で) 間違った決定を下したと思います。私が提案する答えは次のとおりです。

  1. 行数が既知の定数で一定であることはわかっていますが、Java で配列を直接使用することはほとんど役に立ちませんArrayList。代わりに使用してください。List配列を使用して実装された(タプル) です。
  2. 変数のペアをリストとしてモデル化するというあなたの考えは非常に良いようで、私はこれに同意します. ただし、LinkedListは一般に より遅いため、この目的で を使用しないでくださいArrayList。どちらの実装もインターフェースを満たしているため、List交換可能に使用できます。
  3. ペア自体を 2 つの要素配列としてモデル化することもできますが、セマンティクスをより理解しやすくするために、2 つの部分の文書化されたデータ クラスを考案する必要があります。

ここで、コンテナーの型が次のようになるとします (変数とクラス自体に適切な名前を付ける必要があります)。

class Pair {
  public final int a;
  public final int b;

  Pair(int a, int b){
    this.a = a;
    this.b = b;
  }
}

次に、次を使用してデータ構造を作成できます。

final int lines = 42; // the number of lines
List<List<Pair>> data = new ArrayList<List<Pair>>(lines);

を使用してデータを入力します。

for(String line : input){
  final List<Pair> lineList = new ArrayList<Pair>();
  lineList.addAll(extractPairsFromLine(line));
  data.add(lineList);
}

whereは を受け取り、を返すextractPairsFromLineメソッドです。StringList<Pair>

于 2012-07-22T18:02:50.783 に答える
1

コレクション フレームワークを使用します。

ArrayList<ArrayList<ArrayList<Integer>>>

于 2012-07-22T17:56:49.343 に答える