Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.mundo.core.support;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Objects;
- import java.util.function.Predicate;
- import java.util.function.Supplier;
- public class ListBuilder<E> {
- private List<E> list;
- private ListBuilder() {
- throw new AssertionError("No com.mundo.core.support.ListBuilder instances for you!");
- }
- private ListBuilder(List<E> list) {
- this.list = list;
- }
- public static <E> ListBuilder<E> create() {
- return create(ArrayList::new);
- }
- public static <E> ListBuilder<E> create(int capacity) {
- return create(() -> new ArrayList<E>(capacity));
- }
- public static <E> ListBuilder<E> create(Supplier<List<E>> supplier) {
- return new ListBuilder<>(supplier.get());
- }
- public ListBuilder<E> add(E e) {
- list.add(e);
- return this;
- }
- public ListBuilder<E> addIfAbsent(E e) {
- return addIf(e, element -> !list.contains(element));
- }
- public ListBuilder<E> addIfNonNull(E e) {
- return addIf(e, Objects::nonNull);
- }
- public ListBuilder<E> addIf(E e, Predicate<E> predicate) {
- if (predicate.test(e)) {
- list.add(e);
- }
- return this;
- }
- public List<E> build() {
- return list;
- }
- @Override
- public String toString() {
- return list.toString();
- }
- }
Add Comment
Please, Sign In to add comment