/** * Use {@link Stream#concat(Stream, Stream)} to combine the iterators. * CAUTION: The Iterable returned by this method is not reusable and does * not support {@link Iterator#remove()} because it is backed by a {@link Stream}. * * @param iterators a {@link java.util.Iterator} object. */ @SafeVarargs public static <T> Iterable<T> concatIterators(final Iterator<T>... iterators) { return concatIterators(Arrays.asList(iterators)); }
public Iterable<IPPollAddress> getAddresses() { final List<Iterator<IPPollAddress>> iters = new ArrayList<>(); for(final IPPollRange range : m_ranges) { iters.add(range.iterator()); } return IteratorUtils.concatIterators(iters); }
public Iterable<IPPollAddress> getAddresses(List<IPPollRange> ranges) { final List<Iterator<IPPollAddress>> iters = new ArrayList<>(); for(final IPPollRange range : ranges) { iters.add(range.iterator()); } return IteratorUtils.concatIterators(iters); }
public Iterable<IPPollAddress> getAddresses() { final List<Iterator<IPPollAddress>> iters = new ArrayList<>(); for(final IPPollRange range : m_ranges) { iters.add(range.iterator()); } return IteratorUtils.concatIterators(iters); }
/** * <p>getConfiguredAddresses</p> * * TODO: This function is inefficient. It has O(n^2) complexity based on the * product of the include ranges and exclude ranges. This might cause problems * if users are using a large number of excluded ranges. * * @return a {@link java.lang.Iterable} object. */ @Override public Iterable<IPPollAddress> getConfiguredAddresses() { getReadLock().lock(); try { final List<IPPollAddress> specifics = getSpecifics(); final List<IPPollRange> ranges = getRanges(); specifics.addAll(getURLSpecifics()); final List<Iterator<IPPollAddress>> iters = new ArrayList<Iterator<IPPollAddress>>(); iters.add(specifics.iterator()); for(final IPPollRange range : ranges) { iters.add(getExcludingInterator(range.iterator())); } return IteratorUtils.concatIterators(iters); } finally { getReadLock().unlock(); } }