سؤال

في C+ يمكن للمرء استخدام التكرار للكتابة إلى تسلسل. أبسط مثال هو:

vector<int> v;
for (vector<int>::iterator it = v.begin(); it!=v.end(); ++it) {
    *it = 42;
}

أحتاج إلى شيء أكثر تعقيدًا - حافظ على التكرار كعضو في الفصل لاستخدام لاحق. لكني لا أعرف كيف أحصل على هذا السلوك من تكرارات جافا.

هل هناك تكرارون يمكن كتابتهم في جافا على الإطلاق؟
إذا لم يكن كذلك ، فما الذي يحل محلهم؟

هل كانت مفيدة؟

المحلول

ال ListIterator (والتي يمكنك الحصول عليها بواسطة List#listIterator()) لديها add() و set() الطرق التي تتيح لك إدراج العنصر واستبداله على التوالي في الفهرس المتكرر حاليًا. هذا هو "التكرار القابل للكتابة" الوحيد الذي يمكنني التفكير فيه في جافا.

لست متأكدًا على الرغم من أن هذا هو الاستبدال الدقيق لرمز C ++ المعطى لأنني لا أعرف C ++.

نصائح أخرى

نظرًا لأنه يمكن الوصول إلى المصفوفات مباشرة وبسرعة عن طريق فهرسها ، فأنت لا تحتاج حقًا إلى كائن Iterator. ألن يكون بما يكفي لإنقاذ فهرس المصفوفة في هذا الفصل الدراسي؟ هذا من شأنه أن يسمح بقراءة وكتابة قيمة الصفيف.

ملاحظة: يمكنك استخدام قائمة ArrayList ، وهي مجموعة متزايدة تلقائيًا من المصفوفات واستخدام ListIterator كـ Balus الموصوفة من أجل استخدام نهج Iterator-Object.

يبدو أنك تريد أ List (أو ربما مجموعة أخرى ، مثل Set) أو صفيف.

أيضا ، يمكنك فقط جعل محتوياتك قابلة للتغيير. يبدو سخيفًا بالنسبة للأعداد الصحيحة ، ولكنه يواصل مثالك

for (MutableInteger i : CollectionOfMInts) i.setTo(42);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top