@Override public Iterator<T> iterator() { return Iterators.mergeSorted( Iterables.transform(iterables, Iterables.<T>toIterator()), comparator); } };
@Nonnull @Override public Iterator<BuilderField> iterator() { return Iterators.mergeSorted( ImmutableList.of(staticFields.iterator(), instanceFields.iterator()), Ordering.natural()); }
@Nonnull @Override public Iterator<BuilderMethod> iterator() { return Iterators.mergeSorted( ImmutableList.of(directMethods.iterator(), virtualMethods.iterator()), Ordering.natural()); }
@Override public Iterator<T> iterator() { return Iterators.mergeSorted( Iterables.transform(iterables, Iterables.<T>toIterator()), comparator); } };
public MergingPageIterator( Collection<Iterator<Page>> iterators, List<Type> types, List<Integer> sortFields, List<SortOrder> sortOrders) { requireNonNull(sortFields, "sortFields is null"); requireNonNull(sortOrders, "sortOrders is null"); checkArgument(sortFields.size() == sortOrders.size(), "sortFields and sortOrders size must match"); this.types = ImmutableList.copyOf(requireNonNull(types, "types is null")); this.sortFields = ImmutableList.copyOf(sortFields); this.sortOrders = ImmutableList.copyOf(sortOrders); this.pageBuilder = new PageBuilder(types); this.pagePositions = mergeSorted( iterators.stream() .map(pages -> concat(transform(pages, PagePositionIterator::new))) .collect(toList()), naturalOrder()); }
@Override public Iterator<T> iterator() { return Iterators.mergeSorted( Iterables.transform(iterables, Iterables.<T>toIterator()), comparator); } };
public static <T> CloseableIterator<T> mergeSorted( List<? extends CloseableIterator<? extends T>> iterators, Comparator<T> comparator ) { Preconditions.checkNotNull(comparator); final Closer closer = Closer.create(); iterators.forEach(closer::register); final Iterator<T> innerIterator = Iterators.mergeSorted(iterators, comparator); return wrap(innerIterator, closer); }
Iterators.mergeSorted( Iterables.transform( backingMap.values(),
Iterators.mergeSorted( Iterables.transform( backingMap.values(),
Iterators.mergeSorted( Iterables.transform( backingMap.values(),
Stream.of(timestampSequences).map(TestRowIterator::new).collect(Collectors.toList()) ); UnmodifiableIterator<Long> mergedTimestamps = Iterators.mergeSorted( Stream.of(timestampSequences).map(List::iterator).collect(Collectors.toList()), Comparator.naturalOrder()
/** * Merge the given collections and return a new metric collection with the sorted values. * <p> * This expects the source collections being merged to be sorted. * <p> * This API is not safe, checks must be performed to verify that the encapsulated data type is * the same as expected. */ static MetricCollection mergeSorted( final MetricType type, final List<List<? extends Metric>> values ) { final List<Metric> data = ImmutableList.copyOf(Iterators.mergeSorted( ImmutableList.copyOf(values.stream().map(Iterable::iterator).iterator()), Metric.comparator())); return build(type, data); }
private <T extends Metric> AggregationOutput collectGroup( final Map<String, String> key, final SessionPair<T> collected, final Function<List<T>, MetricCollection> builder ) { final ImmutableList.Builder<List<T>> iterables = ImmutableList.builder(); for (final List<T> d : collected.data) { iterables.add(d); } final Set<Series> series = ImmutableSet.copyOf(Iterables.concat(collected.series)); /* no need to merge, single results are already sorted */ if (collected.data.size() == 1) { return new AggregationOutput(key, series, builder.apply(iterables.build().iterator().next())); } final ImmutableList<Iterator<T>> iterators = ImmutableList.copyOf(iterables.build().stream().map(Iterable::iterator).iterator()); final Iterator<T> metrics = Iterators.mergeSorted(iterators, Metric.comparator()); return new AggregationOutput(key, series, builder.apply(ImmutableList.copyOf(metrics))); } }
/** * Iterates only over keys in the range [start,end]. */ RecoveryLogsIterator(VolumeManager fs, List<Path> recoveryLogPaths, LogFileKey start, LogFileKey end) throws IOException { iterators = new ArrayList<>(recoveryLogPaths.size()); try { for (Path log : recoveryLogPaths) { LOG.debug("Opening recovery log {}", log.getName()); RecoveryLogReader rlr = new RecoveryLogReader(fs, log, start, end); if (rlr.hasNext()) { LOG.debug("Write ahead log {} has data in range {} {}", log.getName(), start, end); iterators.add(rlr); } else { LOG.debug("Write ahead log {} has no data in range {} {}", log.getName(), start, end); rlr.close(); } } iter = Iterators.mergeSorted(iterators, (o1, o2) -> o1.getKey().compareTo(o2.getKey())); } catch (RuntimeException | IOException e) { try { close(); } catch (Exception e2) { e.addSuppressed(e2); } throw e; } }
@Override public Iterator<T> iterator() { return Iterators.mergeSorted( Iterables.transform(iterables, Iterables.<T>toIterator()), comparator); } };
@Override public Iterator<T> iterator() { return Iterators.mergeSorted( Iterables.transform(iterables, Iterables.<T>toIterator()), comparator); } };
@Override public Iterator<T> iterator() { return Iterators.mergeSorted( Iterables.transform(iterables, Iterables.<T>toIterator()), comparator); } };
@Override public Iterator<T> iterator() { return Iterators.mergeSorted( Iterables.transform(iterables, Iterables.<T>toIterator()), comparator); } };
@Nonnull @Override public Iterator<Field> iterator() { return Iterators.mergeSorted( ImmutableList.of(staticFields.iterator(), instanceFields.iterator()), Ordering.natural()); }
@Nonnull @Override public Iterator<PoolMethod> iterator() { return Iterators.mergeSorted( ImmutableList.of(directMethods.iterator(), virtualMethods.iterator()), Ordering.natural()); }