現代のコレクションの最もクリーンなコーディングの利点の1つは、それぞれの構成を使用する能力です。私は以下の簡単な一般的なテーブル印刷方法と、それに続くテスト読み込み方法を持っています。これは動作しますが、何らかのfor-eachは多くのクリーナーになります。何か案は?グアバテーブルにfor-eachコンストラクションを使用する方法はありますか?
public void printTable(Table table)
{
int numRows = table.rowKeySet().size();
int numCols = table.columnKeySet().size();
for (int i=0; i<numRows; i++)
{
for (int j=0; j<numCols; j++)
{
System.out.print(table.get(i,j) + " ");
}
System.out.println();
}
}
Table<Integer, Integer, Integer> table = HashBasedTable.create();
void makeTable()
{
for (int i=0; i<4; i++)
for (int j=0; j<6; j++)
table.put(i, j, i*j+2);
}
foreachループは 'Iterable'を実装している配列やものでしか動作しません。 Guavaの 'Table'はそれらのどちらでもないので、あなたはあなたのインデックス付きforループに悩まされています。 – skaffman
ああ!それは理にかなっていますが、少し残念です。ありがとう! – MantaMan
上記の構造と、行と列のキーを使用した同様の構造では、物事が追加されたり削除されたりした複雑なテーブルのnullエントリをチェックする必要がありました。次のアプローチははるかに優れています:Collection coral = table.values(); for(Coral coral:サンゴ){System.out.println(サンゴ); } –
MantaMan