Example usage for com.google.common.collect UnmodifiableIterator UnmodifiableIterator

List of usage examples for com.google.common.collect UnmodifiableIterator UnmodifiableIterator

Introduction

In this page you can find the example usage for com.google.common.collect UnmodifiableIterator UnmodifiableIterator.

Prototype

protected UnmodifiableIterator() 

Source Link

Document

Constructor for use by subclasses.

Usage

From source file:org.elasticsearch.common.collect.Iterators2.java

/** Remove duplicated elements from an iterator over sorted content. */
public static <T> Iterator<T> deduplicateSorted(Iterator<? extends T> iterator,
        final Comparator<? super T> comparator) {
    final PeekingIterator<T> it = Iterators.peekingIterator(iterator);
    return new UnmodifiableIterator<T>() {

        @Override/*from   w  w w .  j av a  2 s  .  co  m*/
        public boolean hasNext() {
            return it.hasNext();
        }

        @Override
        public T next() {
            final T ret = it.next();
            while (it.hasNext() && comparator.compare(ret, it.peek()) == 0) {
                it.next();
            }
            assert !it.hasNext() || comparator.compare(ret, it.peek()) < 0 : "iterator is not sorted: " + ret
                    + " > " + it.peek();
            return ret;
        }

    };
}

From source file:com.yahoo.elide.core.PersistentResourceSet.java

@Override
public Iterator<PersistentResource<T>> iterator() {
    final Iterator<T> iterator = list.iterator();
    return new UnmodifiableIterator<PersistentResource<T>>() {
        @Override//from w  w w  .  j  a  va 2s. co m
        public boolean hasNext() {
            return iterator.hasNext();
        }

        @Override
        public PersistentResource<T> next() {
            return new PersistentResource<>(iterator.next(), requestScope);
        }
    };
}

From source file:com.complexible.common.collect.Iterators2.java

/**
 * Creates an {@link Iterator} that returns the same element a predetermined number of times
 *
 * @param <T> the type of the element
 * @param theElement the element to return
 * @param theNumberOfTimes the number of times to repeat the element
 * @return an Iterator that will repeat the given element the specified number of times
 *//*from w ww.  j av a2s  .  co  m*/
public static <T> Iterator<T> repeat(final T theElement, final long theNumberOfTimes) {

    return new UnmodifiableIterator<T>() {
        long count = 0;

        public boolean hasNext() {
            return count < theNumberOfTimes;
        }

        public T next() {
            count++;
            return theElement;
        }
    };
}

From source file:org.sakaiproject.nakamura.search.solr.SparseSearchResultSet.java

public SparseSearchResultSet(Iterable<Content> items, int maxResults) {
    final Iterator<Content> itemsIter = items.iterator();
    iterator = new CountingIterator<Result>(new UnmodifiableIterator<Result>() {

        public boolean hasNext() {
            return itemsIter != null && itemsIter.hasNext();
        }/*w ww. j  a  va2  s  . c  om*/

        public Result next() {
            Content c = itemsIter.next();
            Map<String, Collection<Object>> props = Maps.newHashMap();
            for (Entry<String, Object> prop : c.getProperties().entrySet()) {
                props.put(prop.getKey(), Lists.newArrayList(prop.getValue()));
            }
            return new GenericResult(c.getPath(), props);
        }

    }, maxResults);
}

From source file:org.sosy_lab.cpachecker.util.CFAUtils.java

/**
 * Return an {@link Iterable} that contains all entering edges of a given CFANode,
 * including the summary edge if the node as one.
 *///  w  w  w  . j av  a 2 s. c o  m
public static FluentIterable<CFAEdge> allEnteringEdges(final CFANode node) {
    checkNotNull(node);
    return new FluentIterable<CFAEdge>() {

        @Override
        public Iterator<CFAEdge> iterator() {
            return new UnmodifiableIterator<CFAEdge>() {

                // the index of the next edge (-1 means the summary edge)
                private int i = (node.getEnteringSummaryEdge() != null) ? -1 : 0;

                @Override
                public boolean hasNext() {
                    return i < node.getNumEnteringEdges();
                }

                @Override
                public CFAEdge next() {
                    if (i == -1) {
                        i = 0;
                        return node.getEnteringSummaryEdge();
                    }
                    return node.getEnteringEdge(i++);
                }
            };
        }
    };
}

From source file:org.sitemap4j.dom4j.Dom4jSiteMapIndexReader.java

@Override
public SiteMapIndex read(final RawSiteMap rawSiteMap) throws UnableToParseSiteMapIndexException {
    final Document document = Dom4jHelper.getDocumentFromRawSiteMap(rawSiteMap);

    final Element rootElement = document.getRootElement();

    return new SiteMapIndex() {
        @Override/*from w w w . ja va2s  .  c o  m*/
        public Iterator<SiteMapLocation> iterator() {
            final Iterator<?> iterator = rootElement.elementIterator("sitemap");

            return new UnmodifiableIterator<SiteMapLocation>() {
                @Override
                public boolean hasNext() {
                    return iterator.hasNext();
                }

                @Override
                public SiteMapLocation next() {
                    final Element sitemapElement = (Element) iterator.next();
                    return extractSiteMapLocationFromSitemapElement(sitemapElement);
                }
            };
        }
    };
}

From source file:org.opendaylight.yangtools.util.ConstantArrayCollection.java

@Nonnull
@Override/* ww w  .  ja  v a  2 s. c  o  m*/
public Iterator<E> iterator() {
    return new UnmodifiableIterator<E>() {
        private int i = 0;

        @Override
        public boolean hasNext() {
            return i < array.length;
        }

        @Override
        public E next() {
            if (i >= array.length) {
                throw new NoSuchElementException();
            }
            return array[i++];
        }
    };
}

From source file:org.sitemap4j.dom4j.Dom4jSiteMapReader.java

@Override
public SiteMap read(final RawSiteMap rawSiteMap) throws UnableToParseSiteMapException {
    final Document document = Dom4jHelper.getDocumentFromRawSiteMap(rawSiteMap);

    final Element rootElement = document.getRootElement();

    return new SiteMap() {
        @Override//from w w  w .  j a va 2  s . c  o  m
        public Iterator<SiteMapUrl> iterator() {
            final Iterator<?> iterator = rootElement.elementIterator("url");
            return new UnmodifiableIterator<SiteMapUrl>() {
                @Override
                public boolean hasNext() {
                    return iterator.hasNext();
                }

                @Override
                public SiteMapUrl next() {
                    try {
                        return extractSiteMapUrlFromElement((Element) iterator.next());
                    } catch (final UnableToParseSiteMapException e) {
                        throw new RuntimeException(e);
                    }
                }
            };
        }
    };
}

From source file:com.cloudera.crunch.io.seq.SeqFileReaderFactory.java

@Override
public Iterator<T> read(FileSystem fs, final Path path) {
    try {//from   w w  w .  j  ava  2  s .  c o m
        final SequenceFile.Reader reader = new SequenceFile.Reader(fs, path, conf);
        return new UnmodifiableIterator<T>() {
            boolean nextChecked = false;
            boolean hasNext = false;

            @Override
            public boolean hasNext() {
                if (nextChecked == true) {
                    return hasNext;
                }
                try {
                    hasNext = reader.next(key, value);
                    nextChecked = true;
                    return hasNext;
                } catch (IOException e) {
                    LOG.info("Error reading from path: " + path, e);
                    return false;
                }
            }

            @Override
            public T next() {
                if (!nextChecked && !hasNext()) {
                    return null;
                }
                nextChecked = false;
                return mapFn.map(value);
            }
        };
    } catch (IOException e) {
        LOG.info("Could not read seqfile at path: " + path, e);
        return Iterators.emptyIterator();
    }
}

From source file:com.cloudera.crunch.io.CompositePathIterable.java

@Override
public Iterator<T> iterator() {
    return new UnmodifiableIterator<T>() {
        private int index = 0;
        private Iterator<T> iter = readerFactory.read(fs, stati[index++].getPath());

        @Override//from  w w  w  .j a v  a2s  .  c  o m
        public boolean hasNext() {
            if (!iter.hasNext()) {
                while (index < stati.length) {
                    iter = readerFactory.read(fs, stati[index++].getPath());
                    if (iter.hasNext()) {
                        return true;
                    }
                }
                return false;
            }
            return true;
        }

        @Override
        public T next() {
            return iter.next();
        }
    };
}