Example usage for com.google.common.collect Iterators cycle

List of usage examples for com.google.common.collect Iterators cycle

Introduction

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

Prototype

public static <T> Iterator<T> cycle(T... elements) 

Source Link

Document

Returns an iterator that cycles indefinitely over the provided elements.

Usage

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;
}