diff --git a/src/main/java/iterator/ArrayList_.java b/src/main/java/iterator/ArrayList_.java new file mode 100644 index 0000000..e994cf5 --- /dev/null +++ b/src/main/java/iterator/ArrayList_.java @@ -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; + } + } +} diff --git a/src/main/java/iterator/Collection_.java b/src/main/java/iterator/Collection_.java new file mode 100644 index 0000000..d13a276 --- /dev/null +++ b/src/main/java/iterator/Collection_.java @@ -0,0 +1,7 @@ +package iterator; + +public interface Collection_ { + void add(Object o); + int size(); + Iterator_ iterator(); +} diff --git a/src/main/java/iterator/Iterator_.java b/src/main/java/iterator/Iterator_.java new file mode 100644 index 0000000..06acabe --- /dev/null +++ b/src/main/java/iterator/Iterator_.java @@ -0,0 +1,6 @@ +package iterator; + +public interface Iterator_ { + boolean hasNext(); + Object next(); +} diff --git a/src/main/java/iterator/LinkedList_.java b/src/main/java/iterator/LinkedList_.java new file mode 100644 index 0000000..595ea3e --- /dev/null +++ b/src/main/java/iterator/LinkedList_.java @@ -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; + } + } +} diff --git a/src/main/java/iterator/Main.java b/src/main/java/iterator/Main.java new file mode 100644 index 0000000..8313d49 --- /dev/null +++ b/src/main/java/iterator/Main.java @@ -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); + } + } +}