Javaで書き込み可能なイテレータはありますか?
質問
でC + 1は、シーケンスに書き込むためのイテレータを使用することができます。最も単純な例は以下のようになります:
vector<int> v;
for (vector<int>::iterator it = v.begin(); it!=v.end(); ++it) {
*it = 42;
}
後で使用するためにクラスのメンバとしてキープイテレータ - 私はもっと複雑なものを必要としています。 しかし、私は、Javaのイテレータからこの動作を取得する方法を知りません。
すべての?
で、Javaで書き込み可能なイテレータがあります
ない場合は、それらをどのような置き換え?
解決
ListIterator
を(これのことができます。 List#listIterator()
するによって得ます) add()
を持っていますそして、 set()
の方法これはあなたがそれぞれ挿入し、現在は反復インデックスにある項目を置き換えることができます。私はJavaでの考えることができるように、そのはるかとしてのみ「書き込み可能なイテレータ」です。
<サブ>わからないことは、私はC ++を知らないので、与えられたC ++コードを正確に置き換えている場合。サブ>
しかし他のヒント
配列は、インデックスによって直接かつ迅速にアクセスできるように、あなたは本当にイテレータオブジェクトを必要としません。そのクラスのメンバー内の配列のインデックスを保存するenoughtではないでしょうか?これは、配列の値を読み書きすることが可能です。
PS:あなたはアレイの自動成長セットでのArrayListを使用しBalusイテレータ・オブジェクト・アプローチを使用するために記載されるように反復子を使用することができます。
より多くのあなたのように見えますが(または多分List
のようないくつかの他のコレクション、)または配列ます。
Set
をしたいです
また、あなたは自分の内容を可変にすることができます。これは、整数の愚かに見えますが、
あなたの例を続けますfor (MutableInteger i : CollectionOfMInts) i.setTo(42);
所属していません StackOverflow