Heim  >  Artikel  >  Java  >  Einführung in das Iterator-Muster von Java-Entwurfsmustern

Einführung in das Iterator-Muster von Java-Entwurfsmustern

高洛峰
高洛峰Original
2017-01-19 16:06:081235Durchsuche

1. Definieren Sie zunächst eine Container-Collection-Schnittstelle

package com.njupt.zhb.learn.iterator;
public interface Collection {
 void add(Object o);
 int size();
 Iterator iterator();
}

2. Definieren Sie eine ArrayList, implementieren Sie eine innere Klasse, die die Iterator-Schnittstelle implementiert.

package com.njupt.zhb.learn.iterator;
public interface Iterator {
 Object next();
 boolean hasNext();
}

4. Schreiben Sie das Testprogramm TestMain

package com.njupt.zhb.learn.iterator;
import com.njupt.zhb.learn.iterator.Collection;
public class ArrayList implements Collection {
 Object[] objects = new Object[10];
 int index = 0;
 public void add(Object o) {
  if(index == objects.length) {
   Object[] newObjects = new Object[objects.length * 2];
   System.arraycopy(objects, 0, newObjects, 0, objects.length);
   objects = newObjects;
  }
  objects[index] = o;
  index ++;
 }

 public int size() {
  return index;
 }

 public Iterator iterator() {

  return new ArrayListIterator();
 }

 private class ArrayListIterator implements Iterator {
  private int currentIndex = 0;
  @Override
  public boolean hasNext() {
   if(currentIndex >= index) return false;
   else return true;
  }
  @Override
  public Object next() {
   Object o = objects[currentIndex];
   currentIndex ++;
   return o;
  }

 }
}

Laufendes Ergebnis:

package com.njupt.zhb.learn.iterator;
import com.njupt.zhb.learn.iterator.ArrayList;
public class TestMain {
 public static void main(String[] args) {
  Collection c = new ArrayList();
  for(int i=0; i<15; i++) {
   c.add("string "+i);
  }
  System.out.println(c.size());
  Iterator it = c.iterator();
  while(it.hasNext()) {
   Object o = it.next();
   System.out.println(o.toString() + " ");
  }
 }
}

Wie oben zu sehen ist, werden überall Entwurfsmuster verwendet im objektorientierten Polymorphismus. Die Schnittstelle ruft Funktionen in Unterklassen auf.

15
string 0 
string 1 
string 2 
string 3 
string 4 
string 5 
string 6 
string 7 
string 8 
string 9 
string 10 
string 11 
string 12 
string 13 
string 14
Weitere Artikel zur Einführung des Iterator-Musters in Java-Entwurfsmuster finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn