1

私は次のような文字列の配列を持っています:

array[0] = "1 4"
array[1] = "2 0"
array[2] = "2 1"
array[3] = "4 2"

次のように、配列要素の最初の部分に重複がある場合は、配列を処理して、配列要素の2番目の部分を同じ行に出力します。

4
0 1
2

私はこれを解決するために何年も努力してきましたが、私はもっと混乱し続けています...

処理は連続した行に基づいています。

4

3 に答える 3

1

私には、単純なJavaコーディングの問題のように見えます。

String lastKey = null;
for (String str : array) {
   String[] parts = str.split(" ");
   if (parts[0].equals(lastKey)) {
       System.out.print(" ");
   } else if (lastKey != null) {
       System.out.println();
   }
   System.out.print(parts[1]);
   lastKey = parts[0];
}
System.out.println();

これは、入力ファイルが最初のフィールドで順序付けられていることを前提としています...

于 2012-10-14T02:40:28.380 に答える
1

コメントを見ると、MultiMapsを使用して、設計を簡素化できるようです。

MultiMap mhm = new MultiHashMap();
for ( string line: array) {
   String []pair = line.split(" ");
   mhm.put(pair[0],pair[1]);
}

for (Collection coll = (Collection) mhm.values() ) {
  //print all values from collection?
}
于 2012-10-14T02:51:13.087 に答える
0

配列リストのインデックスnとn+1をチェックします。両方の文字列をトークン化し、最初の要素を比較します。最初の要素が同じである場合、1行の両方の文字列から2番目の要素を印刷できます。

特に最初の番号として2を探しているのではなく、リストの連続する要素のみをチェックしたいとします。そうですか?

于 2012-10-14T02:24:17.600 に答える