1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.jboss.netty.channel.group;
17
18 import java.util.Iterator;
19 import java.util.NoSuchElementException;
20
21
22
23
24
25
26 final class CombinedIterator<E> implements Iterator<E> {
27
28 private final Iterator<E> i1;
29 private final Iterator<E> i2;
30 private Iterator<E> currentIterator;
31
32 CombinedIterator(Iterator<E> i1, Iterator<E> i2) {
33 if (i1 == null) {
34 throw new NullPointerException("i1");
35 }
36 if (i2 == null) {
37 throw new NullPointerException("i2");
38 }
39 this.i1 = i1;
40 this.i2 = i2;
41 currentIterator = i1;
42 }
43
44 public boolean hasNext() {
45 boolean hasNext = currentIterator.hasNext();
46 if (hasNext) {
47 return true;
48 }
49
50 if (currentIterator == i1) {
51 currentIterator = i2;
52 return hasNext();
53 } else {
54 return false;
55 }
56 }
57
58 public E next() {
59 try {
60 E e = currentIterator.next();
61 return e;
62 } catch (NoSuchElementException e) {
63 if (currentIterator == i1) {
64 currentIterator = i2;
65 return next();
66 } else {
67 throw e;
68 }
69 }
70 }
71
72 public void remove() {
73 currentIterator.remove();
74 }
75
76 }