Skip to content
Snippets Groups Projects
Select Git revision
  • a2f20d1bc2adecab0cf770dddad9b6699ff47c60
  • main default protected
  • master
3 results

TeachingUnitResult.java

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    Iterations.java 3.18 KiB
    package fr.univamu.helpers;
    
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.NoSuchElementException;
    import java.util.function.Function;
    import java.util.stream.Stream;
    import java.util.stream.StreamSupport;
    
    public class Iterations {
    
      public static Iterator<Integer> range(int fromIncluded, int toExcluded) {
        return new Iterator<Integer>() {
          private int current;
    
          @Override
          public boolean hasNext() {
            return current < toExcluded;
          }
    
          @Override
          public Integer next() {
            if (!hasNext()) {
              throw new NoSuchElementException();
            }
            return current++;
          }
        };
      }
    
    
      public static <S,T> Iterator<T> map(Iterator<S> iterator, Function<S,T> f) {
        return new Iterator<T>() {
    
          @Override
          public boolean hasNext() {
            return iterator.hasNext();
          }
    
          @Override
          public T next() {
            return f.apply(iterator.next());
          }
        };
      }
    
      public static <T> Stream<T> toStream(Iterable<T> iterable) {
        return StreamSupport.stream(iterable.spliterator(), false);
      }
    
      public static <T> Iterable<T> empty() {
        return () -> new Iterator<T>() {
          @Override
          public boolean hasNext() {
            return false;
          }
    
          @Override
          public T next() {
            throw new NoSuchElementException();
          }
        };
      }
    
      public static <T> Iterable<T> single(T element) {
        return () -> new Iterator<T> () {
          private boolean hasNext = true;
          @Override
          public boolean hasNext() {