واجهة ITERATOR
1. واجهة ITERATOR
ITERBILE
طريقة مدمجة iterator () إرجاع ايتراتر تم إنشاؤه حديثا.
يحب:
الواجهة العامة itervable {iterator iterator () ؛ } لدى ITerator طريقتان: Hasnext () و Next () للتنفيذ. واجهة عامة iterator {boolean hasnext () ؛ البند التالي () ؛ باطلة إزالة () ؛ // التنفيذ الاختياري}
2. تنفيذ الاستيراد
استيراد java.util.iterator ؛
الفئات العامة ، تنفيذ واجهة Ithabl تنفذ ITERFIR
تنفذ طريقة iterable's Iterator () ، وإرجاع أي نوع ايتراتر محدد.
تحديد نوع التكرار يطبق ITERATAR <ETEM>
تنفيذ Hasnext () و Next () و Remove ()
3. مثال:
مكدس الفئة العامة <Item> ينفذ Itervable <Etem> {public Iterator <Item> iterator () {return new listIritator <item> (أولاً) ؛ } فئة خاصة ListIterator <Etem> تنفذ ITerator <Item> {Node Private <Etem> Current ؛ Public ListIratorator (Node <Etem> first) {current = first ؛ } boolean public hasnext () {return current! = null ؛ } public void remove () {refl new UnsupportedOperationException () ؛ } العنصر العام التالي () {if (! hasnext ()) رمي nosuchelementException () ؛ عنصر العنصر = current.item ؛ الحالي = current.next ؛ عنصر الإرجاع ؛ }}} 4. أساليب الاتصال
Foreach التكرار
لـ (سلسلة S: stack) system.out.println (s) ؛
إذا كان نوعًا أساسيًا مثل int/double ، فيرجى استخدام علاقة التحويل السابقة
5. حلقة اجتياز
iterator i = stack.iterator () ؛ بينما (i.hasNext ()) {string s = i.next () ؛ }واجهة التعداد
التعداد هو فئة واجهة في java.util. في التعداد ، يتضمن طرقًا حول تعداد مجموعات البيانات. إنه مشابه للتكرار. يتم استخدامه لاجتياز العناصر في المجموعة. ومع ذلك ، فإن تعداد التعداد يوفر فقط وظيفة اجتياز عناصر المتجه ومجموعات نوع التجزئة. يحصل هذا النوع من كائن المجموعة على كائن التعداد من خلال استدعاء طريقة العناصر () ثم يستدعي الطرق التالية لتجاوز العناصر في المجموعة.
hasmorelements (): يحدد ما إذا كانت هناك بيانات في كائن التعداد
NextElement (): احصل على البيانات التالية في كائن التعداد
الأمثلة على النحو التالي:
التعداد req = request.getParameterNames () ؛ بينما (req.hasmoreElements ()) {object obj = (object) req.nextElement () ؛ if (obj.toString (). trim (). equals ("lastPage")) {system.out.println ("lastpage /n") ؛ } if if (obj.toString (). trim (). equals ("nextpage")) {system.out.println ("nextpage") ؛ }} الفرق بين التكرار والتعداد
في مجموعات Java ، عادةً ما نعبر المجموعة من خلال "iterator" أو "فئة التعداد". اليوم ، دعنا نتعرف على الاختلافات بينهما معًا.
دعونا أولاً نلقي نظرة على رموز المصدر للتعداد. java و iterator.java ، ثم نتحدث عن خلافاتهم.
التعداد هو واجهة ، ورمز المصدر الخاص به كما يلي:
حزمة java.util ؛ تعداد الواجهة العامة <e> {boolean hasmorelements () ؛ e nextelement () ؛} Iterator هي أيضًا واجهة ، ورمز المصدر الخاص به على النحو التالي:
package java.util ؛ iterator الواجهة العامة <e> {boolean hasnext () ؛ E التالي () ؛ void remove () ؛} بعد قراءة الكود ، دعنا نتحدث عن الفرق بينهما.
(01) واجهات وظائف مختلفة
التعداد لديه فقط 2 واجهات الوظيفة. من خلال التعداد ، يمكننا فقط قراءة بيانات المجموعة ، ولكن لا يمكننا تعديل البيانات.
يحتوي ITERATOR على 3 واجهات وظيفية فقط. بالإضافة إلى قراءة بيانات المجموعة ، يمكن لـ ITerator أيضًا حذف البيانات.
(02) يدعم ITERATOR آلية الفشل ، ولكن التعداد لا.
التعداد هو واجهة تضاف إليها JDK 1.0. تشمل الوظائف المستخدمة المتجه ، وعلم الهاش ، والفئات الأخرى ، والتي يتم إضافتها جميعًا في JDK 1.0. الغرض من التعداد هو تزويدهم بواجهة اجتياز. لا يدعم التعداد نفسه التزامن ، ولكن عندما ينفذ المتجه والعلامة التعداد ، تتم إضافة التزامن.
ITerator هي واجهة تمت إضافتها فقط في JDK 1.2. كما يوفر واجهات اجتياز للمجموعات مثل HashMap و ArrayList. يدعم ITerator آلية الفشل: عندما تعمل مؤشرات ترابط متعددة على محتوى نفس المجموعة ، قد يتم إنشاء حدث فاشل.