package com.vaguehope.onosendai.util; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; public final class CollectionHelper { private CollectionHelper () { throw new AssertionError(); } public static <J, I extends J, O, C extends Collection<O>> C map (final I[] input, final Function<J, O> funciton, final C output) { for (final I i : input) { output.add(funciton.exec(i)); } return output; } public static <J, I extends J, O, C extends Collection<O>> C map (final Collection<I> input, final Function<J, O> funciton, final C output) { for (final I i : input) { output.add(funciton.exec(i)); } return output; } public static <J, I extends J, C extends Collection<I>> C filter (final I[] input, final Function<J, Boolean> funciton, final C output) { return filter(Arrays.asList(input), funciton, output); } public static <J, I extends J, C extends Collection<I>> C filter (final Collection<I> input, final Function<J, Boolean> funciton, final C output) { for (final I i : input) { if (funciton.exec(i)) output.add(i); } return output; } public interface Function<I, O> { O exec(I input); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - public static Collection<Integer> sequence(final int from, final int count) { final Integer[] arr = new Integer[count]; for (int i = 0; i < count; i++) { arr[i] = Integer.valueOf(from + i); } return Arrays.asList(arr); } public static <T> List<T> listOf(final T... items) { return Collections.unmodifiableList(Arrays.asList(items)); } /** * Ordered as specified. */ public static <T> Set<T> setOf(final T... items) { return Collections.unmodifiableSet(new LinkedHashSet<T>(Arrays.asList(items))); } public static <O, C extends Collection<O>> C assertNoNulls(final C col) { for (final O i : col) { if (i == null) throw new IllegalArgumentException("Must not contain nulls: " + col); } return col; } }