/** * Copyright (c) 2005-2013 by Appcelerator, Inc. All Rights Reserved. * Licensed under the terms of the Eclipse Public License (EPL). * Please see the license.txt included with this distribution for details. * Any modifications to this file must keep this entire header intact. */ package org.python.pydev.shared_core.utils; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; import org.eclipse.core.runtime.Assert; import org.python.pydev.shared_core.callbacks.ICallback; public class ArrayUtils { /** * @param listToFilter the list that should be filtered. * @param callbackThatFilters if true is returned in the callback, that means that the object should be added to the * resulting list. */ public static <T> List<T> filter(T[] listToFilter, ICallback<Boolean, T> callbackThatFilters) { ArrayList<T> lst = new ArrayList<T>(); for (T marker : listToFilter) { if (callbackThatFilters.call(marker)) { lst.add(marker); } } return lst; } public static <T> T[] concatArrays(T[]... arrays) { Assert.isTrue(arrays.length > 0, "Arrays len must be > 0."); int count = 0; for (T[] array : arrays) { count += array.length; } final T[] mergedArray = (T[]) java.lang.reflect.Array.newInstance(arrays[0].getClass().getComponentType(), count); int start = 0; for (T[] array : arrays) { System.arraycopy(array, 0, mergedArray, start, array.length); start += array.length; } return mergedArray; } public static <T> T[] remove(T[] original, int element, Class componentType) { final T[] n = (T[]) java.lang.reflect.Array.newInstance(componentType, original.length - 1); System.arraycopy(original, 0, n, 0, element); System.arraycopy(original, element + 1, n, element, original.length - element - 1); return n; } public static <T> int indexOf(T[] original, T element) { for (int i = 0; i < original.length; i++) { if (element.equals(original)) { return i; } } return -1; } public static boolean contains(Object[] array, Object o) { if (array == null) { return false; } return Arrays.asList(array).contains(o); } public static <T> Set<T> asSet(T... objects) { return new HashSet<>(Arrays.asList(objects)); } }