| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You 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.apache.commons.collections4; |
| |
| /** |
| * <p> |
| * Operations on arrays, primitive arrays (like {@code int[]}) and primitive wrapper arrays (like {@code Integer[]}). |
| * </p> |
| * <p> |
| * This class tries to handle {@code null} input gracefully. An exception will not be thrown for a {@code null} array |
| * input. However, an Object array that contains a {@code null} element may throw an exception. Each method documents |
| * its behavior. |
| * </p> |
| * <p> |
| * Package private, might move to an internal package if this needs to be public. |
| * </p> |
| * <p> |
| * #ThreadSafe# |
| * </p> |
| * |
| * @since 4.2 (Copied from Apache Commons Lang.) |
| * |
| */ |
| class ArrayUtils { |
| |
| /** |
| * The index value when an element is not found in a list or array: {@code -1}. This value is returned by methods in |
| * this class and can also be used in comparisons with values returned by various method from |
| * {@link java.util.List}. |
| */ |
| static final int INDEX_NOT_FOUND = -1; |
| |
| /** |
| * <p> |
| * Checks if the object is in the given array. |
| * </p> |
| * |
| * <p> |
| * The method returns {@code false} if a {@code null} array is passed in. |
| * </p> |
| * |
| * @param array |
| * the array to search through |
| * @param objectToFind |
| * the object to find |
| * @return {@code true} if the array contains the object |
| */ |
| static boolean contains(final Object[] array, final Object objectToFind) { |
| return indexOf(array, objectToFind) != INDEX_NOT_FOUND; |
| } |
| |
| /** |
| * <p> |
| * Finds the index of the given object in the array. |
| * </p> |
| * |
| * <p> |
| * This method returns {@link #INDEX_NOT_FOUND} ({@code -1}) for a {@code null} input array. |
| * </p> |
| * |
| * @param array |
| * the array to search through for the object, may be {@code null} |
| * @param objectToFind |
| * the object to find, may be {@code null} |
| * @return the index of the object within the array, {@link #INDEX_NOT_FOUND} ({@code -1}) if not found or |
| * {@code null} array input |
| */ |
| static <T> int indexOf(final T[] array, final Object objectToFind) { |
| return indexOf(array, objectToFind, 0); |
| } |
| |
| /** |
| * <p> |
| * Finds the index of the given object in the array starting at the given index. |
| * </p> |
| * |
| * <p> |
| * This method returns {@link #INDEX_NOT_FOUND} ({@code -1}) for a {@code null} input array. |
| * </p> |
| * |
| * <p> |
| * A negative startIndex is treated as zero. A startIndex larger than the array length will return |
| * {@link #INDEX_NOT_FOUND} ({@code -1}). |
| * </p> |
| * |
| * @param array |
| * the array to search through for the object, may be {@code null} |
| * @param objectToFind |
| * the object to find, may be {@code null} |
| * @param startIndex |
| * the index to start searching at |
| * @return the index of the object within the array starting at the index, {@link #INDEX_NOT_FOUND} ({@code -1}) if |
| * not found or {@code null} array input |
| */ |
| static int indexOf(final Object[] array, final Object objectToFind, int startIndex) { |
| if (array == null) { |
| return INDEX_NOT_FOUND; |
| } |
| if (startIndex < 0) { |
| startIndex = 0; |
| } |
| if (objectToFind == null) { |
| for (int i = startIndex; i < array.length; i++) { |
| if (array[i] == null) { |
| return i; |
| } |
| } |
| } else { |
| for (int i = startIndex; i < array.length; i++) { |
| if (objectToFind.equals(array[i])) { |
| return i; |
| } |
| } |
| } |
| return INDEX_NOT_FOUND; |
| } |
| |
| } |