0
Queue<Transaction> collection = new Queue<Transaction>

for(Transaction t: collection)
{ StdOut.println(t); }

オブジェクトに関する私の理解から、データ型トランザクション (型パラメーター) のオブジェクト、キューを作成したように見えます。コレクションはそのオブジェクトへの参照です。正しい?

次に、コードの 2 番目のビットが私を混乱させます。キューにあるものを印刷するためにループしていますが、これがどのように機能するかわかりません。コレクションは、トランザクション タイプのキューを指します。オブジェクト Transaction への参照 t を作成し、参照コレクションに対して何かを行っているようです。かなり混乱しています。

4

5 に答える 5

2

これは、Java がイテレータを処理するために持っているシンタックス シュガーです。Queue はIterableインターフェースを実装します。for ループはcollectionのイテレータを要求し、それを処理する方法を知っています。

実装するクラスごとに、Iterableこの構文を使用できます。

于 2013-08-06T11:03:34.680 に答える
2

「for-each」表記は、最終的なクラス ファイルで実際に次のように置き換えられます。

for(Iterator i = collection.iterator(); iterator.hasNext(); Transaction t = iterator.next())

これは単にイテレータを取得tし、ループを通過するたびにイテレータの次の値に等しく設定します。これは、 を実装する任意のオブジェクトで実行できますIterable

于 2013-08-06T11:05:30.037 に答える
1

ここで起こっていることQueueは、 にiterator()メソッドがあるということです。ここで行っているようにそれを にフィードするforeach-loopと、イテレータ オブジェクトが呼び出されます。次に、for ループは、そのイテレーター内のオブジェクトの反復処理を開始します。

于 2013-08-06T11:04:41.217 に答える
0

for(Transaction t: collection)読み取り用:

コレクション内の各トランザクション

また

トランザクション t オーバー コレクションの場合

于 2013-08-06T11:09:10.657 に答える