io.vavr.collection.List.prepend()方法的使用及代码示例

x33g5p2x  于2022-01-24 转载在 其他  
字(7.3k)|赞(0)|评价(0)|浏览(102)

本文整理了Java中io.vavr.collection.List.prepend()方法的一些代码示例,展示了List.prepend()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。List.prepend()方法的具体详情如下:
包路径:io.vavr.collection.List
类名称:List
方法名:prepend

List.prepend介绍

暂无

代码示例

代码示例来源:origin: vavr-io/vavr

/**
 * Pushes the given elements on top of this List. A List has LIFO order, i.e. the last of the given elements is
 * the first which will be retrieved.
 *
 * @param elements An Iterable of elements, may be empty
 * @return a new {@code List} instance, containing the new elements on top of this List
 * @throws NullPointerException if elements is null
 */
default List<T> pushAll(Iterable<T> elements) {
  Objects.requireNonNull(elements, "elements is null");
  List<T> result = this;
  for (T element : elements) {
    result = result.prepend(element);
  }
  return result;
}

代码示例来源:origin: vavr-io/vavr

/**
 * Enqueues a new element.
 *
 * @param element The new element
 * @return a new {@code Queue} instance, containing the new element
 */
@Override
public Queue<T> enqueue(T element) {
  return new Queue<>(front, rear.prepend(element));
}

代码示例来源:origin: vavr-io/vavr

@Override
public Queue<T> prepend(T element) {
  return new Queue<>(front.prepend(element), rear);
}

代码示例来源:origin: vavr-io/vavr

@Override
default <U> List<U> map(Function<? super T, ? extends U> mapper) {
  Objects.requireNonNull(mapper, "mapper is null");
  List<U> list = empty();
  for (T t : this) {
    list = list.prepend(mapper.apply(t));
  }
  return list.reverse();
}

代码示例来源:origin: vavr-io/vavr

@Override
default <U> List<U> flatMap(Function<? super T, ? extends Iterable<? extends U>> mapper) {
  Objects.requireNonNull(mapper, "mapper is null");
  List<U> list = empty();
  for (T t : this) {
    for (U u : mapper.apply(t)) {
      list = list.prepend(u);
    }
  }
  return list.reverse();
}

代码示例来源:origin: vavr-io/vavr

@Override
default List<T> append(T element) {
  return foldRight(of(element), (x, xs) -> xs.prepend(x));
}

代码示例来源:origin: vavr-io/vavr

@Override
default Tuple2<List<T>, List<T>> partition(Predicate<? super T> predicate) {
  Objects.requireNonNull(predicate, "predicate is null");
  List<T> left = empty(), right = empty();
  for (T t : this) {
    if (predicate.test(t)) {
      left = left.prepend(t);
    } else {
      right = right.prepend(t);
    }
  }
  return Tuple.of(left.reverse(), right.reverse());
}

代码示例来源:origin: vavr-io/vavr

@Override
default <T1, T2> Tuple2<List<T1>, List<T2>> unzip(
    Function<? super T, Tuple2<? extends T1, ? extends T2>> unzipper) {
  Objects.requireNonNull(unzipper, "unzipper is null");
  List<T1> xs = Nil.instance();
  List<T2> ys = Nil.instance();
  for (T element : this) {
    final Tuple2<? extends T1, ? extends T2> t = unzipper.apply(element);
    xs = xs.prepend(t._1);
    ys = ys.prepend(t._2);
  }
  return Tuple.of(xs.reverse(), ys.reverse());
}

代码示例来源:origin: vavr-io/vavr

@Override
default <T1, T2, T3> Tuple3<List<T1>, List<T2>, List<T3>> unzip3(
    Function<? super T, Tuple3<? extends T1, ? extends T2, ? extends T3>> unzipper) {
  Objects.requireNonNull(unzipper, "unzipper is null");
  List<T1> xs = Nil.instance();
  List<T2> ys = Nil.instance();
  List<T3> zs = Nil.instance();
  for (T element : this) {
    final Tuple3<? extends T1, ? extends T2, ? extends T3> t = unzipper.apply(element);
    xs = xs.prepend(t._1);
    ys = ys.prepend(t._2);
    zs = zs.prepend(t._3);
  }
  return Tuple.of(xs.reverse(), ys.reverse(), zs.reverse());
}

代码示例来源:origin: vavr-io/vavr

@Override
default List<T> replaceAll(T currentElement, T newElement) {
  List<T> result = Nil.instance();
  boolean changed = false;
  for (List<T> list = this; !list.isEmpty(); list = list.tail()) {
    final T head = list.head();
    if (Objects.equals(head, currentElement)) {
      result = result.prepend(newElement);
      changed = true;
    } else {
      result = result.prepend(head);
    }
  }
  return changed ? result.reverse() : this;
}

代码示例来源:origin: vavr-io/vavr

static <T> Tuple2<List<T>, List<T>> splitByPredicateReversed(List<T> source, Predicate<? super T> predicate) {
    Objects.requireNonNull(predicate, "predicate is null");
    List<T> init = Nil.instance();
    List<T> tail = source;
    while (!tail.isEmpty() && !predicate.test(tail.head())) {
      init = init.prepend(tail.head());
      tail = tail.tail();
    }
    return Tuple.of(init, tail);
  }
}

代码示例来源:origin: vavr-io/vavr

@Override
public io.vavr.collection.List<T> toList() {
  io.vavr.collection.List<T> results = io.vavr.collection.List.empty();
  for (PriorityQueue<T> queue = this; !queue.isEmpty(); ) {
    final Tuple2<T, PriorityQueue<T>> dequeue = queue.dequeue();
    results = results.prepend(dequeue._1);
    queue = dequeue._2;
  }
  return results.reverse();
}

代码示例来源:origin: vavr-io/vavr

@Override
default List<T> takeWhile(Predicate<? super T> predicate) {
  Objects.requireNonNull(predicate, "predicate is null");
  List<T> result = Nil.instance();
  for (List<T> list = this; !list.isEmpty() && predicate.test(list.head()); list = list.tail()) {
    result = result.prepend(list.head());
  }
  return result.length() == length() ? this : result.reverse();
}

代码示例来源:origin: vavr-io/vavr

@Override
default List<T> removeFirst(Predicate<T> predicate) {
  Objects.requireNonNull(predicate, "predicate is null");
  List<T> init = empty();
  List<T> tail = this;
  while (!tail.isEmpty() && !predicate.test(tail.head())) {
    init = init.prepend(tail.head());
    tail = tail.tail();
  }
  if (tail.isEmpty()) {
    return this;
  } else {
    return init.foldLeft(tail.tail(), List::prepend);
  }
}

代码示例来源:origin: vavr-io/vavr

@Override
default List<T> filter(Predicate<? super T> predicate) {
  Objects.requireNonNull(predicate, "predicate is null");
  if (isEmpty()) {
    return this;
  } else {
    final List<T> filtered = foldLeft(empty(), (xs, x) -> predicate.test(x) ? xs.prepend(x) : xs);
    if (filtered.isEmpty()) {
      return empty();
    } else if (filtered.length() == length()) {
      return this;
    } else {
      return filtered.reverse();
    }
  }
}

代码示例来源:origin: vavr-io/vavr

@Override
default List<T> take(int n) {
  if (n <= 0) {
    return empty();
  }
  if (n >= length()) {
    return this;
  }
  List<T> result = Nil.instance();
  List<T> list = this;
  for (int i = 0; i < n; i++, list = list.tail()) {
    result = result.prepend(list.head());
  }
  return result.reverse();
}

代码示例来源:origin: vavr-io/vavr

static <T> List<List<T>> apply(List<T> elements, int k) {
    if (k == 0) {
      return List.of(List.empty());
    } else {
      return elements.zipWithIndex().flatMap(
          t -> apply(elements.drop(t._2 + 1), (k - 1)).map(c -> c.prepend(t._1))
      );
    }
  }
}

代码示例来源:origin: vavr-io/vavr

static <T> Stream<T> apply(io.vavr.collection.List<T> front, io.vavr.collection.List<T> rear, Stream<T> remaining) {
    if (remaining.isEmpty()) {
      return remaining;
    } else if (front.isEmpty()) {
      return apply(rear.reverse(), io.vavr.collection.List.empty(), remaining);
    } else {
      return Stream.cons(front.head(),
          () -> apply(front.tail(), rear.prepend(remaining.head()), remaining.tail()));
    }
  }
}

代码示例来源:origin: vavr-io/vavr

@Override
default Tuple2<List<T>, List<T>> splitAt(int n) {
  if (isEmpty()) {
    return Tuple.of(empty(), empty());
  } else {
    List<T> init = Nil.instance();
    List<T> tail = this;
    while (n > 0 && !tail.isEmpty()) {
      init = init.prepend(tail.head());
      tail = tail.tail();
      n--;
    }
    return Tuple.of(init.reverse(), tail);
  }
}

代码示例来源:origin: vavr-io/vavr

@Override
default Tuple2<List<T>, List<T>> splitAtInclusive(Predicate<? super T> predicate) {
  if (isEmpty()) {
    return Tuple.of(empty(), empty());
  } else {
    final Tuple2<List<T>, List<T>> t = SplitAt.splitByPredicateReversed(this, predicate);
    if (t._2.isEmpty() || t._2.tail().isEmpty()) {
      return Tuple.of(this, empty());
    } else {
      return Tuple.of(t._1.prepend(t._2.head()).reverse(), t._2.tail());
    }
  }
}

相关文章