Skip to content

Commit 668a705

Browse files
author
Bytekeeper
committed
Added remove() to Iterator.
1 parent 4591bef commit 668a705

File tree

2 files changed

+42
-5
lines changed

2 files changed

+42
-5
lines changed

src/main/java/org/bk/ass/collection/UnorderedCollection.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package org.bk.ass.collection;
22

3-
import java.util.AbstractCollection;
4-
import java.util.Collection;
5-
import java.util.Iterator;
6-
import java.util.NoSuchElementException;
3+
import java.util.*;
74

85
import static java.lang.Math.max;
96
import static java.lang.Math.min;
@@ -107,7 +104,7 @@ public Iterator<T> iterator() {
107104

108105
@Override
109106
public Object[] toArray() {
110-
return items;
107+
return Arrays.copyOf(items, size);
111108
}
112109

113110
@Override
@@ -135,6 +132,11 @@ public void clear() {
135132
private class UnorderedListIterator implements Iterator<T> {
136133
private int index;
137134

135+
@Override
136+
public void remove() {
137+
UnorderedCollection.this.removeAt(index - 1);
138+
}
139+
138140
@Override
139141
public boolean hasNext() {
140142
return index < size;

src/test/java/org/bk/ass/collection/UnorderedCollectionTest.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import org.junit.jupiter.api.Test;
44

55
import java.util.Arrays;
6+
import java.util.Iterator;
67

78
import static org.assertj.core.api.Assertions.assertThat;
89

@@ -84,4 +85,38 @@ public void shouldRemoveElements() {
8485
// THEN
8586
assertThat(sut).containsExactly("test2");
8687
}
88+
89+
@Test
90+
void shouldRemoveInIterator() {
91+
// GIVEN
92+
String toRemove = "test";
93+
sut.add(toRemove);
94+
95+
Iterator<Object> iterator = sut.iterator();
96+
iterator.next();
97+
98+
// WHEN
99+
iterator.remove();
100+
101+
// THEN
102+
assertThat(sut).isEmpty();
103+
}
104+
105+
@Test
106+
void shouldRemoveCorrectItemInIterator() {
107+
// GIVEN
108+
String toRemove = "test";
109+
sut.add(toRemove);
110+
String expectedRemainingItem = "test2";
111+
sut.add(expectedRemainingItem);
112+
113+
Iterator<Object> iterator = sut.iterator();
114+
iterator.next();
115+
116+
// WHEN
117+
iterator.remove();
118+
119+
// THEN
120+
assertThat(sut).containsExactly(expectedRemainingItem);
121+
}
87122
}

0 commit comments

Comments
 (0)