Java tutorial
//package com.java2s; //License from project: Apache License public class Main { /** * get next element of the target element, after the first one that match the target element front to back * <ul> * <li>if array is empty, return defaultValue</li> * <li>if target element is not exist in array, return defaultValue</li> * <li>if target element exist in array and not the last one in array, return the next element</li> * <li>if target element exist in array and the last one in array, return the first one in array if isCircle is * true, else return defaultValue</li> * </ul> * * @param <V> * @param sourceArray * @param value value of target element * @param defaultValue default return value * @param isCircle whether is circle * @return */ public static <V> V getNext(V[] sourceArray, V value, V defaultValue, boolean isCircle) { if (isEmpty(sourceArray)) { return defaultValue; } int currentPosition = -1; for (int i = 0; i < sourceArray.length; i++) { if (isEquals(value, sourceArray[i])) { currentPosition = i; break; } } if (currentPosition == -1) { return defaultValue; } if (currentPosition == sourceArray.length - 1) { return isCircle ? sourceArray[0] : defaultValue; } return sourceArray[currentPosition + 1]; } /** * @see {@link ArrayUtils#getNext(Object[], Object, Object, boolean)} defaultValue is null */ public static <V> V getNext(V[] sourceArray, V value, boolean isCircle) { return getNext(sourceArray, value, null, isCircle); } /** * @see {@link ArrayUtils#getNext(Object[], Object, Object, boolean)} Object is Long */ public static long getNext(long[] sourceArray, long value, long defaultValue, boolean isCircle) { if (sourceArray.length == 0) { throw new IllegalArgumentException("The length of source array must be greater than 0."); } Long[] array = transformLongArray(sourceArray); return getNext(array, value, defaultValue, isCircle); } /** * @see {@link ArrayUtils#getNext(Object[], Object, Object, boolean)} Object is Integer */ public static int getNext(int[] sourceArray, int value, int defaultValue, boolean isCircle) { if (sourceArray.length == 0) { throw new IllegalArgumentException("The length of source array must be greater than 0."); } Integer[] array = transformIntArray(sourceArray); return getNext(array, value, defaultValue, isCircle); } /** * is null or its length is 0 * * @param <V> * @param sourceArray * @return */ public static <V> boolean isEmpty(V[] sourceArray) { return (sourceArray == null || sourceArray.length == 0); } /** * compare two object * * @param actual * @param expected * @return <ul> * <li>if both are null, return true</li> * <li>return actual.{@link Object#equals(Object)}</li> * </ul> */ public static boolean isEquals(Object actual, Object expected) { return actual == expected || (actual == null ? expected == null : actual.equals(expected)); } /** * convert long array to Long array * * @param source * @return */ public static Long[] transformLongArray(long[] source) { Long[] destin = new Long[source.length]; for (int i = 0; i < source.length; i++) { destin[i] = source[i]; } return destin; } /** * convert Long array to long array * * @param source * @return */ public static long[] transformLongArray(Long[] source) { long[] destin = new long[source.length]; for (int i = 0; i < source.length; i++) { destin[i] = source[i]; } return destin; } /** * convert int array to Integer array * * @param source * @return */ public static Integer[] transformIntArray(int[] source) { Integer[] destin = new Integer[source.length]; for (int i = 0; i < source.length; i++) { destin[i] = source[i]; } return destin; } /** * convert Integer array to int array * * @param source * @return */ public static int[] transformIntArray(Integer[] source) { int[] destin = new int[source.length]; for (int i = 0; i < source.length; i++) { destin[i] = source[i]; } return destin; } }