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:com.twitter.hbc.core.HttpHosts.java

/**
 * All httpHosts must start with the http scheme("http:// or https://")
 *//*from  w w  w  . jav a2s  .c  om*/
public HttpHosts(Iterable<String> addresses) {
    Preconditions.checkNotNull(addresses);
    Preconditions.checkArgument(!Iterables.isEmpty(addresses));
    for (String address : addresses) {
        if (!address.toLowerCase().startsWith(HttpConstants.HTTP_SCHEME + "://")
                && !address.toLowerCase().startsWith(HttpConstants.HTTPS_SCHEME + "://")) {
            throw new IllegalArgumentException("Address doesn't have an http scheme: " + address);
        }
    }
    List<String> copy = Lists.newArrayList(addresses);
    Collections.shuffle(copy);
    this.hosts = Iterators.cycle(copy);
}

From source file:com.addthis.hydra.task.source.DataSourceConstant.java

@Override
public void init() {
    Iterator<Bundle> iter;/* www  .j a v  a 2  s.  co m*/
    if (repeat == 0) {
        iter = bundles.iterator();
    } else {
        iter = Iterators.cycle(bundles);
        if (repeat > 0) {
            iter = Iterators.limit(iter, (repeat + 1) * bundles.size());
        }
    }
    iterator = Iterators.peekingIterator(iter);
}

From source file:at.molindo.notify.channel.mail.RoundRobinMailClient.java

private Iterator<IMailClient> newIterator() {
    return Iterators.cycle(_clients);
}

From source file:runtime.intrinsic._zip.java

/**
 * Optimized version for list pairs.//from www  . j ava 2  s  .co  m
 */
public static ListValue invoke2(final ListValue listx, final ListValue listy) {
    final int xsize = listx.size();
    final int ysize = listy.size();

    if (xsize == 0 || ysize == 0)
        return PersistentList.EMPTY;

    final Iterator<?> xiter, yiter;
    final int size;
    if (xsize == ysize) {
        xiter = listx.iterator();
        yiter = listy.iterator();
        size = xsize;
    } else {
        xiter = Iterators.cycle(listx);
        yiter = Iterators.cycle(listy);
        size = Math.max(xsize, ysize);
    }

    final PersistentList listxy = PersistentList.alloc(size);

    for (int i = 0; i < size; i++)
        listxy.updateUnsafe(i, Tuple.from(xiter.next(), yiter.next()));

    return listxy;
}

From source file:com.cubeia.poker.variant.telesina.TelesinaDealerButtonCalculator.java

public int getNextDealerSeat(SortedMap<Integer, PokerPlayer> currentSeatingMap, int currentDealerSeatId,
        boolean wasHandCancelled) {

    // no players seated the dealerbutton should not move
    if (currentSeatingMap.isEmpty()) {
        return currentDealerSeatId;
    }/* ww w . j  a  v  a 2  s.c  o  m*/

    // cancelled hand should not move dealerbutton
    if (wasHandCancelled) {
        return currentDealerSeatId;
    }

    // one player will make never ending loop
    if (currentSeatingMap.size() == 1) {
        return currentSeatingMap.firstKey();
    }

    ArrayList<Integer> seatList = new ArrayList<Integer>(currentSeatingMap.keySet());
    if (!seatList.contains(currentDealerSeatId)) {
        seatList.add(currentDealerSeatId);
    }
    Collections.sort(seatList);

    Iterator<Integer> seatIterator = Iterators.cycle(seatList);

    // wind ahead until
    int seat = seatIterator.next();

    while (seat < currentDealerSeatId) {
        seat = seatIterator.next();
    }
    return seatIterator.next();

}

From source file:com.blacklocus.jres.Jres.java

public Jres(final List<String> elasticSearchHostOrHosts) {
    this(new Supplier<String>() {
        final Iterator<String> cycler = Iterators.cycle(elasticSearchHostOrHosts);

        @Override//from w  w w  .  j  a va 2 s  .co m
        public String get() {
            return cycler.next();
        }
    });
}

From source file:runtime.intrinsic._mapz.java

public static ListValue invoke2(final ListValue listx, final ListValue listy, final Lambda func) {
    final int xsize = listx.size();
    final int ysize = listy.size();

    if (xsize == 0 || ysize == 0)
        return PersistentList.EMPTY;

    final Iterator<?> xiter, yiter;
    final int size;
    if (xsize == ysize) {
        xiter = listx.iterator();//from www  .j  a v a  2 s . co m
        yiter = listy.iterator();
        size = xsize;
    } else {
        xiter = Iterators.cycle(listx);
        yiter = Iterators.cycle(listy);
        size = Math.max(xsize, ysize);
    }

    final PersistentList result = PersistentList.alloc(size);

    for (int i = 0; i < size; i++)
        result.updateUnsafe(i, func.apply(Tuple.from(xiter.next(), yiter.next())));

    return result;
}

From source file:google.registry.testing.DeterministicStringGenerator.java

public DeterministicStringGenerator(@Named("alphabet") String alphabet, Rule rule) {
    super(alphabet);
    iterator = Iterators.cycle(charactersOf(alphabet));
    this.rule = rule;
}

From source file:com.infinities.skyport.vnc.impl.RoundRobinWebsockifyService.java

@Override
public synchronized void initialize() throws Exception {
    for (WebsockifyService service : services) {
        service.initialize();/*from  w w w .  ja v  a 2  s. c o  m*/
    }

    iterator = Iterators.cycle(services);
}

From source file:com.mlaskows.quiz.model.entity.Level.java

/**
 * Returns next unsolved exercise in cycle for specified
 * id./*from   w  w w . j  a v  a2 s. co  m*/
 * 
 * @param id
 *            previous exercise id
 * @param forward
 *            search forward if true, backward if false
 * @return next unsolved exercise
 */
public Exercise getUnsolvedInCycle(int id, boolean forward) {
    if (getExercises() == null || getExercises().isEmpty()) {
        return null;
    }
    List<Exercise> exercises = null;
    if (forward) {
        exercises = new ArrayList<Exercise>(getExercises());
    } else {
        exercises = Lists.reverse(new ArrayList<Exercise>(getExercises()));
    }
    Iterator<Exercise> ie = Iterators.cycle(exercises);
    int count = 0;
    boolean isAfterSpecified = false;
    // Iterate over cycle.
    while (count <= exercises.size() + id) {
        Exercise e = ie.next();
        /* Search for next unsolved exercise only if
         * specified by method parameter was reached
         * or if parameter equals 0.
         */
        if ((isAfterSpecified || id == 0) && !e.isSolved()) {
            return e;
        }
        /* Exercise specified by method parameter is 
         * reached. Now next exercise can be searched. 
         */
        if (id == e.getId()) {
            isAfterSpecified = true;
        }
        count++;
    }
    return null;
}