package com.wangyin.ak47.common; import java.util.Arrays; import java.util.List; /** * Collection-related helper class * * 提供集合、数组的相关操作 * * @author hubingyin * */ public class CollectionUtil { /** * Add obj to list if obj is NOT exsit in list, otherwise dont do any thing. * * @param list * a list * @param obj * the object may to be added */ public static <T> void addIfNotExist(List<T> list, T obj) { boolean isexist = false; for (T t : list) { if (t.equals(obj)) { isexist = true; break; } } if (!isexist) { list.add(obj); } } /** * Shift left the given string array with 1 step, discard the original * leftmost ones. * * See: like Linux shell shift * * 将字符串数组左移一位,丢弃原最左边的对象 * * @param array * string array * @return string array to be shifted */ public static String[] shift(String[] array) { return shift(array, 1); } /** * Shift left the given string array with N step, discard the original * leftmost ones. * * 将字符串数组左移n位,原最左边的对象丢弃 * * @param array * string array * @param n * number of shifted * @return string array to be shifted */ public static String[] shift(String[] array, int n) { if (n <= 0) { throw new IllegalArgumentException("n must a non-negative number."); } if (n >= array.length) { return new String[0]; } String[] dest = new String[array.length - n]; System.arraycopy(array, n, dest, 0, array.length - n); return dest; } /** * Merge an array of string to a big string. * * 将 array 合并成 string * * @param array * object array * @return a joined string */ @SafeVarargs public static <T> String array2String(T... array) { int len = array.length; if (len == 0) { return ""; } StringBuilder sb = new StringBuilder(); sb.append("[").append(array[0]); for (int i = 1; i < array.length; i++) { sb.append(",").append(array[i]); } sb.append("]"); return sb.toString(); } /** * Merge a list of string to a big string. * * 将list转成string * * @param list * list of object * @return a joined string */ public static String list2String(List<?> list) { return array2String(list2Array(list)); } /** * Convert array to List * * Example: {@code List<String> stooges = ArrayUtil.array2List("Larry", "Moe", * "Curly");} * * @param array * array of objects * @return list of objects */ @SafeVarargs public static <T> List<T> array2List(T... array) { return Arrays.asList(array); } /** * Convert List to array * * Example: String[] myarray = (String[]) ArrayUtil.list2Array(mylist); * * * @param list * list of objects * @return array of objects */ public static <T> Object[] list2Array(List<T> list) { return list.toArray(); } /** * Convert list of string to a joined string. * * @param list * list of strings * @param separator * separator between strings * @return a joined string */ public static String join(List<String> list, String separator) { if (list == null || list.size() == 0) { return ""; } StringBuilder sb = new StringBuilder(); sb.append(list.get(0)); int size = list.size(); for (int i = 1; i < size; i++) { sb.append(separator).append(list.get(i)); } return sb.toString(); } /** * 得到数组成员的class类型数组 * * @param objects array of Object * @return array of Object's Class Type */ @SafeVarargs public static <T> Class<?>[] objects2Classes(T... objects) { Class<?>[] clazzs = new Class<?>[objects.length]; for(int i=0; i<objects.length; i++){ clazzs[i] = objects[i].getClass(); } return clazzs; } /** * 得到数组成员的class类型数组 * * @param objects list of Object * @return array of Object's Class Type */ public static <T> Class<?>[] objects2Classes(List<Object> objects) { int size = objects.size(); Class<?>[] clazzs = new Class<?>[size]; for(int i=0; i<size; i++){ clazzs[i] = objects.get(i).getClass(); } return clazzs; } }