| 106 | |
| 107 | |
| 108 | @Override |
| 109 | public Iterator<Integer> iterator() |
| 110 | { |
| 111 | final Iterator<Integer> iterator = new Iterator<Integer>() |
| 112 | { |
| 113 | int index = 0; |
| 114 | boolean canRemove = false; |
| 115 | |
| 116 | @Override |
| 117 | public boolean hasNext() |
| 118 | { |
| 119 | return index < size; |
| 120 | } |
| 121 | |
| 122 | @Override |
| 123 | public Integer next() |
| 124 | { |
| 125 | if(!hasNext()) |
| 126 | throw new NoSuchElementException("The whole set has been iterated"); |
| 127 | canRemove = true; |
| 128 | return store[index++]; |
| 129 | } |
| 130 | |
| 131 | @Override |
| 132 | public void remove() |
| 133 | { |
| 134 | if(!canRemove) |
| 135 | throw new IllegalStateException("Can not remove, remove can only occur after a successful call to next"); |
| 136 | |
| 137 | for(int i = index; i < size; i++ ) |
| 138 | store[i-1] = store[i]; |
| 139 | |
| 140 | index--; |
| 141 | size--; |
| 142 | canRemove = false; |
| 143 | } |
| 144 | }; |
| 145 | return iterator; |
| 146 | } |
| 147 | |
| 148 | @Override |
| 149 | public int size() |