Guest User

Untitled

a guest
Feb 19th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. package com.mundo.core.support;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.Objects;
  6. import java.util.function.Predicate;
  7. import java.util.function.Supplier;
  8.  
  9. public class ListBuilder<E> {
  10. private List<E> list;
  11.  
  12. private ListBuilder() {
  13. throw new AssertionError("No com.mundo.core.support.ListBuilder instances for you!");
  14. }
  15.  
  16. private ListBuilder(List<E> list) {
  17. this.list = list;
  18. }
  19.  
  20. public static <E> ListBuilder<E> create() {
  21. return create(ArrayList::new);
  22. }
  23.  
  24. public static <E> ListBuilder<E> create(int capacity) {
  25. return create(() -> new ArrayList<E>(capacity));
  26. }
  27.  
  28. public static <E> ListBuilder<E> create(Supplier<List<E>> supplier) {
  29. return new ListBuilder<>(supplier.get());
  30. }
  31.  
  32. public ListBuilder<E> add(E e) {
  33. list.add(e);
  34. return this;
  35. }
  36.  
  37. public ListBuilder<E> addIfAbsent(E e) {
  38. return addIf(e, element -> !list.contains(element));
  39. }
  40.  
  41. public ListBuilder<E> addIfNonNull(E e) {
  42. return addIf(e, Objects::nonNull);
  43. }
  44.  
  45. public ListBuilder<E> addIf(E e, Predicate<E> predicate) {
  46. if (predicate.test(e)) {
  47. list.add(e);
  48. }
  49. return this;
  50. }
  51.  
  52. public List<E> build() {
  53. return list;
  54. }
  55.  
  56. @Override
  57. public String toString() {
  58. return list.toString();
  59. }
  60. }
Add Comment
Please, Sign In to add comment