صمم مكررًا يدعم عملية "النظرة الخاطفة" على مكرر موجود بالإضافة إلى عمليتي "hasNext" و"next".

تنفيذ فئة "PeekingIterator":

* `PeekingIterator(Iterator nums)` يقوم بتهيئة الكائن باستخدام المكرر الصحيح المحدد `iterator`.
* `int next()` يُرجع العنصر التالي في المصفوفة ويحرك المؤشر إلى العنصر التالي.
* `boolean hasNext()` تُرجع `true` إذا كان لا يزال هناك عناصر في المصفوفة.
* `int peek()` يُرجع العنصر التالي في المصفوفة **بدون** تحريك المؤشر.

**ملاحظة:** قد يكون لكل لغة تطبيق مختلف للمنشئ و`Iterator`، ولكنها جميعها تدعم الدالتين `int next()` و`boolean hasNext()`.

**مثال 1:**

**مدخل**
\[ "PeekingIterator"، "التالي"، "نظرة خاطفة"، "التالي"، "التالي"، "التالي"، "التالي"\]
\[\[\[1, 2, 3\]\], \[\], \[\], \[\], \[\], \[\]\]
**انتاج**
\[فارغة، 1، 2، 2، 3، خطأ\]

**توضيح**
PeekingIterator peekingIterator = new PeekingIterator(\[1, 2, 3\]); // \[**1**,2,3\]
peekingIterator.next(); // العودة 1، ينتقل المؤشر إلى العنصر التالي \[1,**2**,3\].
peekingIterator.peek(); // العودة 2، المؤشر لا يتحرك \[1,**2**,3\].
peekingIterator.next(); // العودة 2، ينتقل المؤشر إلى العنصر التالي \[1,2,**3**\]
peekingIterator.next(); // العودة 3، ينتقل المؤشر إلى العنصر التالي \[1,2,3\]
peekingIterator.hasNext(); // عودة كاذبة

**قيود:**

* `1 <= الأعداد.الطول <= 1000`
* `1 <= الأعداد[i] <= 1000`
* جميع الاستدعاءات إلى "التالي" و"النظرة الخاطفة" صالحة.
* سيتم إجراء 1000 مكالمة على الأكثر إلى "التالي" و"التالي" و"النظرة الخاطفة".

**متابعة:** كيف يمكنك توسيع تصميمك ليصبح عامًا ويعمل مع جميع الأنواع، وليس فقط الأعداد الصحيحة؟
{"source": "LDJnr/Capybara#Tigerbot", "kind": "unknown", "evolved_from": null}