List of usage examples for com.google.common.collect Iterators cycle
public static <T> Iterator<T> cycle(T... elements)
From source file:runtime.intrinsic._listsets.java
public static ListValue invoke(final ListValue list, final ListValue indexes, final ListValue vals) { ListValue result = list;//w ww . j a va 2s . c o m final Iterator<?> valiter = vals.size() >= indexes.size() ? vals.iterator() : Iterators.cycle(vals); for (final Object index : indexes) result = result.update((Integer) index, valiter.next()); return result; }
From source file:runtime.intrinsic._mapsets.java
public static MapValue invoke(final MapValue map, final ListValue keys, final ListValue vals) { MapValue result = map;// w w w . j av a 2 s . c o m final Iterator<?> valiter = vals.size() >= keys.size() ? vals.iterator() : Iterators.cycle(vals); for (final Object key : keys) result = result.assoc(key, valiter.next()); return result; }
From source file:runtime.intrinsic._assoc.java
public static MapValue invoke(final ListValue keys, final ListValue vals) { if (vals.size() == 0) return PersistentMap.EMPTY; final PersistentMap result = PersistentMap.fresh(); final Iterator<?> valiter = vals.size() >= keys.size() ? vals.iterator() : Iterators.cycle(vals); for (final Object key : keys) result.assocUnsafe(key, valiter.next()); return result; }
From source file:runtime.intrinsic._group.java
public static MapValue invoke(final ListValue keys, final ListValue vals) { if (vals.size() == 0) return PersistentMap.EMPTY; final PersistentMap result = PersistentMap.fresh(); final Iterator<?> keyiter = keys.size() >= vals.size() ? keys.iterator() : Iterators.cycle(keys); for (final Object val : vals) { final Object key = keyiter.next(); final PersistentList keyvals = (PersistentList) result.get(key); if (keyvals == null) { result.assocUnsafe(key, PersistentList.single(val)); } else {//from w w w . j av a 2s .com result.assocUnsafe(key, keyvals.appendUnsafe(val)); } } return result; }
From source file:runtime.intrinsic._take.java
public static ListValue invoke(final int n, final ListValue list) { final int size = list.size(); if (size == 0) { return list; } else {/*from w w w . java 2 s.co m*/ final int extent = Math.abs(n); if (extent == size) { return list; } else if (extent < size) { // sublist cases return n >= 0 ? (ListValue) list.subList(0, n) : (ListValue) list.subList(size + n, size); } else { // rollover cases if (n >= 0) { return PersistentList.init(Iterators.cycle(list), n); } else { final PersistentList result = PersistentList.alloc(extent); int ri = 0; for (int i = n + 1; i <= 0; i++) result.updateUnsafe(ri++, list.get(size + (i % size) - 1)); return result; } } } }
From source file:com.ibm.og.supplier.Suppliers.java
/** * Creates a supplier that returns values in a cycle * /*from w w w .ja va2 s . co m*/ * @param values the values to supply * @return a supplier which supplies values in a cycle * @throws NullPointerException if values is null or contains null elements */ public static <T> Supplier<T> cycle(final List<T> values) { final List<T> copy = ImmutableList.copyOf(values); checkArgument(!copy.isEmpty(), "values must not be empty"); final Iterator<T> it = Iterators.cycle(copy); return new Supplier<T>() { @Override public T get() { return it.next(); } @Override public String toString() { return String.format("cycle %s", copy); } }; }
From source file:runtime.intrinsic._zip.java
public static ListValue invoke(final Tuple lists) { final int wid = lists.size(); // fast implementation of common case (pair of lists) if (wid == 2) return invoke2((ListValue) lists.get(0), (ListValue) lists.get(1)); // variable-width cases int size = 0; boolean even = true; for (int i = 0; i < wid; i++) { final int listsize = ((ListValue) lists.get(i)).size(); // note early bailout if (listsize == 0) return PersistentList.EMPTY; if (size < listsize) { size = listsize;/*from ww w . j a v a2s .com*/ even = false; } } final PersistentList result = PersistentList.alloc(size); final Iterator<?>[] iters = new Iterator<?>[wid]; for (int j = 0; j < wid; j++) { final ListValue list = (ListValue) lists.get(j); iters[j] = even ? list.iterator() : Iterators.cycle(list); } for (int i = 0; i < size; i++) { final Object[] vals = new Object[wid]; for (int j = 0; j < wid; j++) vals[j] = iters[j].next(); result.updateUnsafe(i, Tuple.from(vals)); } return result; }
From source file:com.bfd.harpc.loadbalance.RoundRobinStrategy.java
@Override protected Collection<S> onBackendsOffered(Set<S> targets) { List<S> newTargets = Lists.newArrayList(targets); Collections.shuffle(newTargets); iterator = Iterators.cycle(newTargets); return newTargets; }
From source file:runtime.intrinsic._mapz.java
public static ListValue invoke(final Tuple lists, final Lambda func) { final int wid = lists.size(); // fast implementation of common case (pair of lists) if (wid == 2) return invoke2((ListValue) lists.get(0), (ListValue) lists.get(1), func); int size = 0; boolean ragged = false; if (wid > 0) { size = ((ListValue) lists.get(0)).size(); // early bailout--any empty component list yields empty zip if (size == 0) return PersistentList.EMPTY; for (int i = 1; i < wid; i++) { final int listsize = ((ListValue) lists.get(i)).size(); // early bailout--any empty component list yields empty zip if (listsize == 0) return PersistentList.EMPTY; if (listsize != size) { // ragged lists must use a slower iterator ragged = true;/*from ww w.j a v a 2s . c o m*/ // size of zipped list is size of longest list size = Math.max(size, listsize); } } } final PersistentList result = PersistentList.alloc(size); final Iterator<?>[] iters = new Iterator<?>[wid]; for (int j = 0; j < wid; j++) { final ListValue list = (ListValue) lists.get(j); iters[j] = ragged ? Iterators.cycle(list) : list.iterator(); } for (int i = 0; i < size; i++) { final Object[] vals = new Object[wid]; for (int j = 0; j < wid; j++) vals[j] = iters[j].next(); result.updateUnsafe(i, func.apply(Tuple.from(vals))); } return result; }
From source file:org.opendaylight.openflowplugin.api.openflow.md.util.PollableQueuesZipper.java
/** * @return next common product of polling member groups *//* w w w. ja v a 2 s .co m*/ public T poll() { T item = null; if (cursor == null) { cursor = Iterators.cycle(sources); } Queue<T> queue; for (int i = 0; i < sources.size(); i++) { queue = cursor.next(); item = queue.poll(); if (item != null) { break; } } return item; }