下面列出了java.util.ArrayDeque#descendingIterator ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* Descending iterator iterates through all elements
*/
public void testDescendingIterator() {
ArrayDeque q = populatedDeque(SIZE);
int i = 0;
Iterator it = q.descendingIterator();
while (it.hasNext()) {
assertTrue(q.contains(it.next()));
++i;
}
assertEquals(i, SIZE);
assertFalse(it.hasNext());
try {
it.next();
shouldThrow();
} catch (NoSuchElementException success) {}
}
/**
* Descending iterator ordering is reverse FIFO
*/
public void testDescendingIteratorOrdering() {
final ArrayDeque q = new ArrayDeque();
for (int iters = 0; iters < 100; ++iters) {
q.add(new Integer(3));
q.add(new Integer(2));
q.add(new Integer(1));
int k = 0;
for (Iterator it = q.descendingIterator(); it.hasNext();) {
assertEquals(++k, it.next());
}
assertEquals(3, k);
q.remove();
q.remove();
q.remove();
}
}
/**
* descendingIterator.remove() removes current element
*/
public void testDescendingIteratorRemove() {
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 = max; j >= 1; --j)
q.add(new Integer(j));
Iterator it = q.descendingIterator();
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.descendingIterator();
for (int j = split + 1; j <= max; ++j) {
assertEquals(it.next(), new Integer(j));
it.remove();
}
assertFalse(it.hasNext());
assertTrue(q.isEmpty());
}
}
/**
* Descending iterator iterates through all elements
*/
public void testDescendingIterator() {
ArrayDeque q = populatedDeque(SIZE);
int i = 0;
Iterator it = q.descendingIterator();
while (it.hasNext()) {
assertTrue(q.contains(it.next()));
++i;
}
assertEquals(i, SIZE);
assertFalse(it.hasNext());
try {
it.next();
shouldThrow();
} catch (NoSuchElementException success) {}
}
/**
* Descending iterator ordering is reverse FIFO
*/
public void testDescendingIteratorOrdering() {
final ArrayDeque q = new ArrayDeque();
for (int iters = 0; iters < 100; ++iters) {
q.add(new Integer(3));
q.add(new Integer(2));
q.add(new Integer(1));
int k = 0;
for (Iterator it = q.descendingIterator(); it.hasNext();) {
assertEquals(++k, it.next());
}
assertEquals(3, k);
q.remove();
q.remove();
q.remove();
}
}
/**
* descendingIterator.remove() removes current element
*/
public void testDescendingIteratorRemove() {
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 = max; j >= 1; --j)
q.add(new Integer(j));
Iterator it = q.descendingIterator();
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.descendingIterator();
for (int j = split + 1; j <= max; ++j) {
assertEquals(it.next(), new Integer(j));
it.remove();
}
assertFalse(it.hasNext());
assertTrue(q.isEmpty());
}
}
public static void addAll(ArrayDeque<NotificationItem> notificationItems) {
// First, clear out what is currently there
clearAll();
// Now add all of the NotificationItems
Iterator<NotificationItem> itemIterator = notificationItems.descendingIterator();
while (itemIterator.hasNext()) {
addItem(itemIterator.next());
}
}
private void addCompounds(final ArrayDeque<Term> terms, final boolean reverse) throws IOException {
final CombineSuggestion[] combinations = suggestCombination(reverse
? terms.descendingIterator() : terms.iterator());
if (combinations != null && combinations.length > 0) {
final Term[] termArray;
if (reverse) {
termArray = new Term[terms.size()];
int i = terms.size() - 1;
final Iterator<Term> termIterator = terms.descendingIterator();
while (termIterator.hasNext()) {
termArray[i--] = termIterator.next();
}
} else {
termArray = terms.toArray(new Term[0]);
}
for (final CombineSuggestion suggestion : combinations) {
// add compound to each sibling that is part of the compound to maintain mm logic
Arrays.stream(suggestion.originalTermIndexes)
.mapToObj(idx -> termArray[idx])
.forEach(sibling -> nodesToAdd.add(
new Term(sibling.getParent(), sibling.getField(), suggestion.suggestion.string, true)));
}
}
}