Iterator pattern

master
terry 3 years ago
parent 8458a90031
commit c29641bcb4

@ -0,0 +1,45 @@
package iterator;
public class ArrayList_ implements Collection_{
Object[] objects = new Object[10];
private int size = 0;
@Override
public void add(Object o) {
if(size == objects.length){
Object[] newObjects = new Object[objects.length*2];
System.arraycopy(objects,0, newObjects, 0, objects.length);
objects = newObjects;
}
objects[size] = o;
size++;
}
@Override
public int size() {
return size;
}
@Override
public Iterator_ iterator() {
return new ArrayListIterator();
}
private class ArrayListIterator implements Iterator_{
private int currentSize = 0;
@Override
public boolean hasNext() {
if(currentSize >= size){
return false;
}
return true;
}
@Override
public Object next() {
Object o = objects[currentSize];
currentSize ++;
return o;
}
}
}

@ -0,0 +1,7 @@
package iterator;
public interface Collection_ {
void add(Object o);
int size();
Iterator_ iterator();
}

@ -0,0 +1,6 @@
package iterator;
public interface Iterator_ {
boolean hasNext();
Object next();
}

@ -0,0 +1,40 @@
package iterator;
public class LinkedList_ implements Collection_{
Node head;
Node tail;
int size = 0;
@Override
public void add(Object o) {
Node n = new Node(o);
n.next = null;
if(head == null){
head = n;
}else{
tail.next = n;
}
tail = n;
size ++;
}
@Override
public int size() {
return size;
}
@Override
public Iterator_ iterator() {
return null;
}
private class Node{
Object o;
Node next;
public Node(Object o) {
this.o = o;
}
}
}

@ -0,0 +1,25 @@
package iterator;
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
Collection_ a = new ArrayList_();
for (int i = 0; i < 15; i++) {
a.add("testA " + i);
}
System.out.println(a.size());
Collection_ l = new LinkedList_();
for (int i = 0; i < 15; i++) {
l.add("testL " + i);
}
System.out.println(l.size());
Iterator_ it = a.iterator();
while (it.hasNext()){
Object o = it.next();
System.out.println(o);
}
}
}
Loading…
Cancel
Save