@Override public LongIterator iterator() { return LongIterators.asLongIterator(base.iterator()); }
@Override public long[] toLongArray() { final long[] items = new long[size()]; LongIterators.unwrap(iterator(), items); return items; }
@Test public void testLowerBound() { LongIterator iter = new AdaptiveSparseItemIterator(context, LongUtils.packedSet(42, 39), 5); LongList items = LongIterators.pour(iter); assertThat(items, hasSize(3)); assertThat(items, containsInAnyOrder(9L, 7L, 13L)); }
/** * Creates a new array list and fills it with a given collection. * * @param c * a collection that will be used to fill the array list. */ public LongArrayList(final Collection<? extends Long> c) { this(c.size()); size = LongIterators.unwrap(LongIterators.asLongIterator(c.iterator()), a); } /**
/** Creates a new Elias–Fano long big list. * * @param iterator an iterator returning natural numbers. */ public EliasFanoLongBigList(final IntIterator iterator) { this(LongIterators.wrap(iterator)); }
@Override public boolean removeAll(Collection<?> c) { if (c instanceof LongCollection) { return removeAll((LongCollection) c); } else { long[] longs = LongIterators.unwrap(LongIterators.asLongIterator(Iterators.filter(c.iterator(), Long.class))); Arrays.sort(longs); return removeAll(LongArrayList.wrap(longs).iterator()); } }
/** Creates a new Elias–Fano long big list. * * @param iterator an iterator returning natural numbers. */ public EliasFanoLongBigList(final ShortIterator iterator) { this(LongIterators.wrap(iterator)); }
@Nonnull @Override public ResultMap scoreWithDetails(long user, @Nonnull Collection<Long> items) { List<Result> results = new ArrayList<>(items.size()); LongIterator iter = LongIterators.asLongIterator(items.iterator()); while (iter.hasNext()) { long item = iter.nextLong(); results.add(Results.create(item, fixedScore)); } return Results.newResultMap(results); }
@Override public boolean retainAll(Collection<?> c) { if (c instanceof LongCollection) { return retainAll((LongCollection) c); } else { long[] longs = LongIterators.unwrap(LongIterators.asLongIterator(Iterators.filter(c.iterator(), Long.class))); Arrays.sort(longs); return retainAll(LongArrayList.wrap(longs).iterator()); } } }
@Override public long[] toLongArray() { final long[] items = new long[size()]; LongIterators.unwrap(iterator(), items); return items; }
/** Creates a new Elias–Fano long big list. * * @param iterator an iterator returning natural numbers. * @param lowerBound a (not necessarily strict) lower bound on the values returned by <code>iterator</code>. */ public EliasFanoLongBigList(final ShortIterator iterator, final short lowerBound) { this(LongIterators.wrap(iterator), lowerBound); }
@Test public void testSingleUserSet() { LongIterator iter = new AdaptiveSparseItemIterator(context, LongUtils.packedSet(42)); LongList items = LongIterators.pour(iter); assertThat(items, containsInAnyOrder(2L, 5L, 9L)); }
@Nonnull @Override public ResultMap scoreWithDetails(long user, @Nonnull Collection<Long> items) { List<Result> results = new ArrayList<>(items.size()); LongIterator iter = LongIterators.asLongIterator(items.iterator()); while (iter.hasNext()) { long item = iter.nextLong(); results.add(Results.create(item, rankScores.get(item))); } return Results.newResultMap(results); } }
@Override public long[] toLongArray(long[] a) { long[] output = a; if (output.length < size()) { output = new long[size()]; } final int sz = LongIterators.unwrap(iterator(), output); if (sz < output.length) { output = Arrays.copyOf(output, sz); } return output; }
/** Creates a new Elias–Fano long big list. * * @param iterator an iterator returning natural numbers. */ public EliasFanoLongBigList(final ByteIterator iterator) { this(LongIterators.wrap(iterator)); }
@Test public void testTwoUserSet() { LongIterator iter = new AdaptiveSparseItemIterator(context, LongUtils.packedSet(42, 39)); LongList items = LongIterators.pour(iter); assertThat(items, hasSize(5)); assertThat(items, containsInAnyOrder(2L, 5L, 9L, 7L, 13L)); }
@Nonnull @Override public ResultMap scoreWithDetails(long user, @Nonnull Collection<Long> items) { List<Result> rs = new ArrayList<>(items.size()); KeyedObjectMap<Result> userResults = userData.get(user); if (userResults != null) { LongIterator iter = LongIterators.asLongIterator(items.iterator()); while (iter.hasNext()) { long item = iter.nextLong(); Result r = userResults.get(item); if (r != null) { rs.add(r); } } } return Results.newResultMap(rs); }
@Override public long[] toLongArray(long[] a) { long[] output = a; if (output.length < size()) { output = new long[size()]; } final int sz = LongIterators.unwrap(iterator(), output); if (sz < output.length) { output = Arrays.copyOf(output, sz); } return output; }
/** Creates a new Elias–Fano long big list. * * @param iterator an iterator returning natural numbers. * @param lowerBound a (not necessarily strict) lower bound on the values returned by <code>iterator</code>. */ public EliasFanoLongBigList(final ByteIterator iterator, final byte lowerBound) { this(LongIterators.wrap(iterator), lowerBound); }
/** * Pours an iterator, returning a type-specific list. * * <p> * This method iterates over the given type-specific iterator and returns a list * containing the returned elements. Iteration on the returned list is * guaranteed to produce the elements in the same order in which they appeared * in the iterator. * * @param i * a type-specific iterator. * @return a type-specific list containing the returned elements. */ public static LongList pour(final LongIterator i) { return pour(i, Integer.MAX_VALUE); } private static class IteratorWrapper implements LongIterator {