List of usage examples for com.google.common.collect UnmodifiableIterator UnmodifiableIterator
protected UnmodifiableIterator()
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(); } }; }