package com.tencent.wstt.gt.log.logcat;
import java.lang.reflect.Array;
import java.util.List;
public class ArrayUtil {
public static <T> int indexOf(T[] array, T object) {
for (int i = 0; i < array.length; i++) {
if (object.equals(array[i])) {
return i;
}
}
return -1;
}
// copied from Java 6 source
public static int[] copyOfRange(int[] original, int start, int end) {
if (start <= end) {
if (original.length >= start && 0 <= start) {
int length = end - start;
int copyLength = Math.min(length, original.length - start);
int[] copy = new int[length];
System.arraycopy(original, start, copy, 0, copyLength);
return copy;
}
throw new ArrayIndexOutOfBoundsException();
}
throw new IllegalArgumentException();
}
public static boolean[] copyOf(boolean[] original, int newLength) {
boolean[] copy = new boolean[newLength];
System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength));
return copy;
}
public static int[] copyOf(int[] original, int newLength) {
int[] copy = new int[newLength];
System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength));
return copy;
}
@SuppressWarnings("unchecked")
public static <T> T[] copyOf(T[] original, int newLength) {
return (T[]) copyOf(original, newLength, original.getClass());
}
@SuppressWarnings("unchecked")
public static <T, U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) {
T[] copy = ((Object) newType == (Object) Object[].class) ? (T[]) new Object[newLength]
: (T[]) Array.newInstance(newType.getComponentType(), newLength);
System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength));
return copy;
}
public static Object[] concatenate(Object[] first, Object[] second) {
Object[] result = new Object[first.length + second.length];
for (int i = 0; i < first.length; i++) {
result[i] = first[i];
}
for (int i = 0; i < second.length; i++) {
result[i + first.length] = second[i];
}
return result;
}
public static int[] concatenate(int[] first, int[] second) {
int[] result = new int[first.length + second.length];
for (int i = 0; i < first.length; i++) {
result[i] = first[i];
}
for (int i = 0; i < second.length; i++) {
result[i + first.length] = second[i];
}
return result;
}
public static boolean[] concatenate(boolean[] first, boolean[] second) {
boolean[] result = new boolean[first.length + second.length];
for (int i = 0; i < first.length; i++) {
result[i] = first[i];
}
for (int i = 0; i < second.length; i++) {
result[i + first.length] = second[i];
}
return result;
}
public static boolean contains(int[] arr, int value) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] == value) {
return true;
}
}
return false;
}
public static <T> T[] toArray(List<T> list, Class<T> clazz) {
@SuppressWarnings("unchecked")
T[] result = (T[]) Array.newInstance(clazz, list.size());
for (int i = 0; i < list.size(); i++) {
result[i] = list.get(i);
}
return result;
}
}