下面列出了java.util.ArrayDeque#iterator ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* iterator.remove() removes current element
*/
public void testIteratorRemove() {
final ArrayDeque q = new ArrayDeque();
final Random rng = new Random();
for (int iters = 0; iters < 100; ++iters) {
int max = rng.nextInt(5) + 2;
int split = rng.nextInt(max - 1) + 1;
for (int j = 1; j <= max; ++j)
q.add(new Integer(j));
Iterator it = q.iterator();
for (int j = 1; j <= split; ++j)
assertEquals(it.next(), new Integer(j));
it.remove();
assertEquals(it.next(), new Integer(split + 1));
for (int j = 1; j <= split; ++j)
q.remove(new Integer(j));
it = q.iterator();
for (int j = split + 1; j <= max; ++j) {
assertEquals(it.next(), new Integer(j));
it.remove();
}
assertFalse(it.hasNext());
assertTrue(q.isEmpty());
}
}
/**
* iterator.remove() removes current element
*/
public void testIteratorRemove() {
final ArrayDeque q = new ArrayDeque();
final Random rng = new Random();
for (int iters = 0; iters < 100; ++iters) {
int max = rng.nextInt(5) + 2;
int split = rng.nextInt(max - 1) + 1;
for (int j = 1; j <= max; ++j)
q.add(new Integer(j));
Iterator it = q.iterator();
for (int j = 1; j <= split; ++j)
assertEquals(it.next(), new Integer(j));
it.remove();
assertEquals(it.next(), new Integer(split + 1));
for (int j = 1; j <= split; ++j)
q.remove(new Integer(j));
it = q.iterator();
for (int j = split + 1; j <= max; ++j) {
assertEquals(it.next(), new Integer(j));
it.remove();
}
assertFalse(it.hasNext());
assertTrue(q.isEmpty());
}
}
/**
* Iterator iterates through all elements
*/
public void testIterator() {
ArrayDeque q = populatedDeque(SIZE);
Iterator it = q.iterator();
int i;
for (i = 0; it.hasNext(); i++)
assertTrue(q.contains(it.next()));
assertEquals(i, SIZE);
assertIteratorExhausted(it);
}
/**
* Iterator ordering is FIFO
*/
public void testIteratorOrdering() {
final ArrayDeque q = new ArrayDeque();
q.add(one);
q.add(two);
q.add(three);
int k = 0;
for (Iterator it = q.iterator(); it.hasNext();) {
assertEquals(++k, it.next());
}
assertEquals(3, k);
}
void checkToArray(ArrayDeque q) {
int size = q.size();
Object[] o = q.toArray();
assertEquals(size, o.length);
Iterator it = q.iterator();
for (int i = 0; i < size; i++) {
Integer x = (Integer) it.next();
assertEquals((Integer)o[0] + i, (int) x);
assertSame(o[i], x);
}
}
void checkToArray2(ArrayDeque q) {
int size = q.size();
Integer[] a1 = (size == 0) ? null : new Integer[size - 1];
Integer[] a2 = new Integer[size];
Integer[] a3 = new Integer[size + 2];
if (size > 0) Arrays.fill(a1, 42);
Arrays.fill(a2, 42);
Arrays.fill(a3, 42);
Integer[] b1 = (size == 0) ? null : (Integer[]) q.toArray(a1);
Integer[] b2 = (Integer[]) q.toArray(a2);
Integer[] b3 = (Integer[]) q.toArray(a3);
assertSame(a2, b2);
assertSame(a3, b3);
Iterator it = q.iterator();
for (int i = 0; i < size; i++) {
Integer x = (Integer) it.next();
assertSame(b1[i], x);
assertEquals(b1[0] + i, (int) x);
assertSame(b2[i], x);
assertSame(b3[i], x);
}
assertNull(a3[size]);
assertEquals(42, (int) a3[size + 1]);
if (size > 0) {
assertNotSame(a1, b1);
assertEquals(size, b1.length);
for (int i = 0; i < a1.length; i++) {
assertEquals(42, (int) a1[i]);
}
}
}
/**
* Iterator iterates through all elements
*/
public void testIterator() {
ArrayDeque q = populatedDeque(SIZE);
Iterator it = q.iterator();
int i;
for (i = 0; it.hasNext(); i++)
assertTrue(q.contains(it.next()));
assertEquals(i, SIZE);
assertIteratorExhausted(it);
}
/**
* Iterator ordering is FIFO
*/
public void testIteratorOrdering() {
final ArrayDeque q = new ArrayDeque();
q.add(one);
q.add(two);
q.add(three);
int k = 0;
for (Iterator it = q.iterator(); it.hasNext();) {
assertEquals(++k, it.next());
}
assertEquals(3, k);
}