-5

これはおそらくランダムで気まぐれな質問ですが、私は最近 Java で配列操作に多くの作業を行ってきました。

for (Object obj : SomeArrayOrCollection) {
    //do something
}

私が通常行っていること (余分な変数を宣言し、ループが実行されるたびにそれに変数を追加する) を行わずに何らかの序数にアクセスする方法がある場合、または私の同僚の 1 人が行うこと (を使用して

List.indexOf(int i) 

方法)?これらは両方ともかなりのオーバーヘッドを追加するように感じます。私は標準を使用できることを知っています

for (declaration;condition;change) { }

ループですが、このプロジェクトのコンテキストでは、変更された for ループを使用する方がはるかに便利です。問題は、上記のようにメモリを集中的に使用する操作に頼らずに、作業中のオブジェクトのインデックスにアクセスする方法があるかどうかです。

ありがとう!

4

5 に答える 5

1

アクセスしたい場合indexは、使用できます

for (int i=0;i<SomeArrayOrCollection.length;i++) {
    //Here i is the index
}

for each を使用すると、インデックスにアクセスできなくなります

その理由は、for-each ループが内部的にカウンターを持たないためです。それはインターフェースに基づいていIterableます。

SEE HERE

于 2013-06-29T12:56:30.293 に答える
1

変更された for ループは、ArrayList などのコレクションに簡単にアクセスするために作成されました。拡張 for ループでは、デフォルトではインデックスにアクセスできません。それをしたい場合は、従来のforループを使用するか、for(initialization; condition ; change )forループの外側で変数を宣言して内側でインクリメントする必要があります

于 2013-06-29T12:57:27.897 に答える
0

いいえ、ありません。インデックスが必要な場合、標準の for ループが不便な理由を説明していただけますか?

于 2013-06-29T12:56:57.667 に答える
0

実際、いや、あなたが普段していることは正しいことだと思います。リストの実装がハッシュマップに支えられていない限り、 indexOf を使用することは間違いなく間違っています(私は期待していません)。

于 2013-06-29T12:57:32.063 に答える