gt22

Untitled

Aug 1st, 2017
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.63 KB | None | 0 0
  1. package com.gt22.pbbot.utils;
  2.  
  3. import com.google.gson.JsonArray;
  4. import com.google.gson.JsonElement;
  5. import org.apache.commons.lang3.ArrayUtils;
  6.  
  7. import java.io.IOException;
  8. import java.nio.file.Files;
  9. import java.nio.file.Path;
  10. import java.util.*;
  11. import java.util.function.*;
  12. import java.util.stream.Collectors;
  13. import java.util.stream.Stream;
  14. import java.util.stream.StreamSupport;
  15.  
  16. public class MiscUtils {
  17.  
  18.     public static class JsonArrayUtils {
  19.         public static <T> List<T> toList(JsonArray arr, Function<JsonElement, T> mapper) {
  20.             return toStream(arr).map(mapper).collect(Collectors.toList());
  21.         }
  22.  
  23.         public static List<String> toStringList(JsonArray arr) {
  24.             return toList(arr, JsonElement::getAsString);
  25.         }
  26.  
  27.         private static Stream<JsonElement> toStream(JsonArray arr, boolean parallel) {
  28.             return StreamSupport.stream(Spliterators.spliterator(arr.iterator(), arr.size(), Spliterator.ORDERED), parallel);
  29.         }
  30.  
  31.         public static Stream<JsonElement> toStream(JsonArray arr) {
  32.             return toStream(arr, false);
  33.         }
  34.  
  35.         public static Stream<JsonElement> toParallelStream(JsonArray arr) {
  36.             return toStream(arr,true);
  37.         }
  38.     }
  39.  
  40.     public static class JoinUtils {
  41.  
  42.         public static BinaryOperator<String> join(String delimiter) {
  43.             return (s1, s2) -> s1 + delimiter + s2;
  44.         }
  45.  
  46.         public static <T> Optional<String> join(Collection<T> coll, Function<T, String> mapper, String delimiter) {
  47.             return coll.stream().map(mapper).reduce(join(delimiter));
  48.         }
  49.  
  50.         public static Optional<String> join(Collection<String> coll, String delimiter) {
  51.             return coll.stream().reduce(join(delimiter));
  52.         }
  53.  
  54.         public static <T> Optional<String> join(T[] arr, Function<T, String> mapper, String delimiter) {
  55.             return Arrays.stream(arr).map(mapper).reduce(join(delimiter));
  56.         }
  57.  
  58.         public static Optional<String> join(String[] arr, String delimiter) {
  59.             return Arrays.stream(arr).reduce(join(delimiter));
  60.         }
  61.     }
  62.  
  63.     public static class ArrayUtils {
  64.  
  65.         public static <T> void forEach(T[] arr, Consumer<T> action) {
  66.             forEach(arr, (e, i) -> action.accept(e));
  67.         }
  68.  
  69.         public static <T> void forEach(T[] arr, BiConsumer<T, Integer> action) {
  70.             for(int i = 0; i < arr.length; i++) {
  71.                 action.accept(arr[i], i);
  72.             }
  73.         }
  74.  
  75.         public static <I, O> O[] map(I[] arr, Function<I, O> mapper, IntFunction<O[]> arrayCreator) {
  76.             O[] out = arrayCreator.apply(arr.length);
  77.             forEach(arr, (e, i) -> out[i] = mapper.apply(e));
  78.             return out;
  79.         }
  80.  
  81.     }
  82.  
  83.     public static Path getRandomFile(Path dir) throws IOException {
  84.         while(dir != null && Files.isDirectory(dir)) {
  85.             dir = Files.list(dir).findAny().orElse(null);
  86.         }
  87.         return dir;
  88.     }
  89. }
Advertisement
Add Comment
Please, Sign In to add comment