package com.rambo.tools; import org.apache.commons.lang.ArrayUtils; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @SuppressWarnings("unchecked") public final class CollectionUtil { /** *Description:实例化一个 arraylist,容量为10 */ public static <T> ArrayList<T> createArrayList() { return new ArrayList(); } /** *Description:实例化一个特定容量的 arraylist * 不像数组的特定罐子,当容量超出设定,会自动扩容 */ public static <T> ArrayList<T> createArrayList(int initialCapacity) { return new ArrayList(initialCapacity); } /** *Description: */ public static <T> ArrayList<T> createArrayList(Iterable<? extends T> c) { ArrayList<T> list; if ((c instanceof Collection)) { list = new ArrayList((Collection) c); } else { list = new ArrayList(); iterableToCollection(c, list); list.trimToSize(); } return list; } /** *Description:根据一个集合创建 arraylist,集合可以是 数组,list,map */ public static <T, V extends T> ArrayList<T> createArrayList(V... args) { if ((args == null) || (args.length == 0)) { return new ArrayList(); } ArrayList<T> list = new ArrayList(args.length); for (V v : args) { list.add(v); } return list; } public static <T> LinkedList<T> createLinkedList() { return new LinkedList(); } public static <T> LinkedList<T> createLinkedList(Iterable<? extends T> c) { LinkedList<T> list = new LinkedList(); iterableToCollection(c, list); return list; } public static <T, V extends T> LinkedList<T> createLinkedList(V... args) { LinkedList<T> list = new LinkedList(); if (args != null) { for (V v : args) { list.add(v); } } return list; } public static <T> List<T> asList(T... args) { if ((args == null) || (args.length == 0)) { return Collections.emptyList(); } return Arrays.asList(args); } public static <K, V> HashMap<K, V> createHashMap() { return new HashMap(); } public static <K, V> HashMap<K, V> createHashMap(int initialCapacity) { return new HashMap(initialCapacity); } public static <K, V> LinkedHashMap<K, V> createLinkedHashMap() { return new LinkedHashMap(); } public static <K, V> LinkedHashMap<K, V> createLinkedHashMap(int initialCapacity) { return new LinkedHashMap(initialCapacity); } public static <K, V> TreeMap<K, V> createTreeMap() { return new TreeMap(); } public static <K, V> TreeMap<K, V> createTreeMap(Comparator<? super K> comparator) { return new TreeMap(comparator); } public static <K, V> ConcurrentHashMap<K, V> createConcurrentHashMap() { return new ConcurrentHashMap(); } public static <T> HashSet<T> createHashSet() { return new HashSet(); } public static <T, V extends T> HashSet<T> createHashSet(V... args) { if ((args == null) || (args.length == 0)) { return new HashSet(); } HashSet<T> set = new HashSet(args.length); for (V v : args) { set.add(v); } return set; } public static <T> HashSet<T> createHashSet(Iterable<? extends T> c) { HashSet<T> set; if ((c instanceof Collection)) { set = new HashSet((Collection) c); } else { set = new HashSet(); iterableToCollection(c, set); } return set; } public static <T> LinkedHashSet<T> createLinkedHashSet() { return new LinkedHashSet(); } public static <T, V extends T> LinkedHashSet<T> createLinkedHashSet(V... args) { if ((args == null) || (args.length == 0)) { return new LinkedHashSet(); } LinkedHashSet<T> set = new LinkedHashSet(args.length); for (V v : args) { set.add(v); } return set; } public static <T> LinkedHashSet<T> createLinkedHashSet(Iterable<? extends T> c) { LinkedHashSet<T> set; if ((c instanceof Collection)) { set = new LinkedHashSet((Collection) c); } else { set = new LinkedHashSet(); iterableToCollection(c, set); } return set; } public static <T> TreeSet<T> createTreeSet() { return new TreeSet(); } public static <T, V extends T> TreeSet<T> createTreeSet(V... args) { return createTreeSet(null, args); } public static <T> TreeSet<T> createTreeSet(Iterable<? extends T> c) { return createTreeSet(null, c); } public static <T> TreeSet<T> createTreeSet(Comparator<? super T> comparator) { return new TreeSet(comparator); } public static <T, V extends T> TreeSet<T> createTreeSet(Comparator<? super T> comparator, V... args) { TreeSet<T> set = new TreeSet(comparator); if (args != null) { for (V v : args) { set.add(v); } } return set; } public static <T> TreeSet<T> createTreeSet(Comparator<? super T> comparator, Iterable<? extends T> c) { TreeSet<T> set = new TreeSet(comparator); iterableToCollection(c, set); return set; } private static <T> void iterableToCollection(Iterable<? extends T> c, Collection<T> list) { for (T element : c) { list.add(element); } } public static boolean isEmpty(Collection collection) { return (collection == null) || (collection.isEmpty()); } public static boolean isEmpty(Map map) { return (map == null) || (map.isEmpty()); } public static String[] toNoNullStringArray(Collection collection) { if (collection == null) { return ArrayUtils.EMPTY_STRING_ARRAY; } return toNoNullStringArray(collection.toArray()); } static String[] toNoNullStringArray(Object[] array) { ArrayList list = new ArrayList(array.length); for (int i = 0; i < array.length; i++) { Object e = array[i]; if (e != null) { list.add(e.toString()); } } return (String[]) list.toArray(ArrayUtils.EMPTY_STRING_ARRAY); } /** *Description:对象类型强转 */ @SuppressWarnings("unchecked") public static <T> T cast(Object obj) { return (T) obj; } public static void main(String[] args) { String[] array = new String[5]; array[0] = "AAAAAA"; array[1]= "BBBBBB"; array[2] = "CCCCCC"; array[3] = "DDDDDD"; array[4] = "EEEEEE"; ArrayList<String> arrayList = createArrayList(); for (String s : array) { arrayList.add(s); } System.out.println("arrayList:" + arrayList); ArrayList<String> arrayList1 = createArrayList(4); for (String s : array) { arrayList1.add(s); } System.out.println("arrayList1:" + arrayList1); //根据 array 索引创建一个 arraylist ArrayList<Object> arrayList2 = createArrayList(array); System.out.println("arrayList2:" + arrayList2.toString()); } }