容器转换成为指定数组

每次希望容器转换成为数组的时候,官方都值提供了转换成为Object数组的,

有的时候还是需要自己手动转换,可是每次都写就会觉得很烦,今天终于研究了一个方法出来了,

终于可以可以省事了

 

[java][/java] view plaincopyprint?

  1. /**
  2.      * 容器转换成数据,支持泛型
  3.      * */
  4.     public static <T> T[] collectionToArray(Collection<T> coll){
  5.         T[] ts = null ;
  6.         try {
  7.             if(coll == null || coll.isEmpty()){
  8.                 return ts;
  9.             }
  10.             ts = collectionToArray(coll , null ) ;
  11.         } catch (Exception e) {
  12.             try {
  13.                 ts = collectionToArray(coll , Object.class ) ;
  14.             } catch (Exception e2) {
  15.                 e2.printStackTrace( ) ;
  16.             }
  17.         }
  18.         return ts ;
  19.     }
  20.     /**
  21.      * 转换类型
  22.      * */
  23.     private static <T> T[] collectionToArray(Collection<T> coll , Class<?> clazz){
  24.         Iterator<T> iterator = coll.iterator() ;
  25.         T[] ts = null ;
  26.         int x=0 ;
  27.         while(iterator.hasNext()){
  28.             T tempT = iterator.next() ;
  29.             if(x == 0){
  30.                 ts = (T[])Array.newInstance(clazz != null ? clazz : tempT.getClass()
  31.                         , coll.size()) ;
  32.             }
  33.             ts[x++] = tempT ;
  34.         }
  35.         return ts ;
  36.     }

标签