私は次のような文字列の配列を持っています:
array[0] = "1 4"
array[1] = "2 0"
array[2] = "2 1"
array[3] = "4 2"
次のように、配列要素の最初の部分に重複がある場合は、配列を処理して、配列要素の2番目の部分を同じ行に出力します。
4
0 1
2
私はこれを解決するために何年も努力してきましたが、私はもっと混乱し続けています...
処理は連続した行に基づいています。
私は次のような文字列の配列を持っています:
array[0] = "1 4"
array[1] = "2 0"
array[2] = "2 1"
array[3] = "4 2"
次のように、配列要素の最初の部分に重複がある場合は、配列を処理して、配列要素の2番目の部分を同じ行に出力します。
4
0 1
2
私はこれを解決するために何年も努力してきましたが、私はもっと混乱し続けています...
処理は連続した行に基づいています。
私には、単純な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();
これは、入力ファイルが最初のフィールドで順序付けられていることを前提としています...
コメントを見ると、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?
}
配列リストのインデックスnとn+1をチェックします。両方の文字列をトークン化し、最初の要素を比較します。最初の要素が同じである場合、1行の両方の文字列から2番目の要素を印刷できます。
特に最初の番号として2を探しているのではなく、リストの連続する要素のみをチェックしたいとします。そうですか?