// Copyright 2011 NPR // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package org.npr.android.util; import java.lang.reflect.Array; /** * Author: Jeremy Wadsack */ public class ArrayUtils { @SuppressWarnings("unused") private static final String LOG_TAG = ArrayUtils.class.getName(); public static int indexOf(int[] list, int item) { for (int i = 0; i < list.length; i++) { if (list[i] == item) { return i; } } return -1; } public static int indexOf(Object[] list, Object item) { if (item == null) { return -1; } for (int i = 0; i < list.length; i++) { if (list[i].equals(item)) { return i; } } return -1; } // Missing when run on Android SDK /** * Copies the specified array, truncating or padding with nulls (if necessary) * so the copy has the specified length. For all indices that are valid in * both the original array and the copy, the two arrays will contain identical * values. For any indices that are valid in the copy but not the original, * the copy will contain null. Such indices will exist if and only if the * specified length is greater than that of the original array. The * resulting array is of exactly the same class as the original array. * * @param original the array to be copied * @param newLength the length of the copy to be returned * @return a copy of the original array, truncated or padded with nulls to * obtain the specified length */ public static<T> T[] copyOf(T[] original, int newLength) { @SuppressWarnings({"unchecked"}) T[] copy = (T[]) Array.newInstance(original.getClass().getComponentType(), newLength); System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength)); return copy; } }