一些小工具方法,能将容器转换成指定的数组类型有使用泛型

如果大家有更好的方法,请回帖


 

/**

	 *一个小工具类

	 *@author Hf

	 *@mailto:[email protected]

	 * 在编程的过程中很多时候都希望能将

	    容器直接转成成为指定的数据,比如

		List<Integer>ids = new ArrayList<Integer>();

		则每次都需要手动创建一个Integer数组,然后在赋值。 

		

		collectionToArray 这个方法就实现了这个功能,可直接转换成为Integer数组

	*/

public class Helper{

	/**

	 *判断去空的方法

	 *@author Hf

	 *@mailto:[email protected]

	 *

	*/

	public static boolean isNull(Object value){

		if(value == null){

			return true ; 

		}

		if(value.getClass().isArray()){

			if(Array.getLength(value) == 0){

				return true ; 

			}

		}

		if(value instanceof Collection<?>){

			Collection<?> collection = (Collection<?>) value ;

			if(collection.isEmpty()){

				return true ;

			}

		}else if(value instanceof Map<?, ?>){

			Map<?, ?> map = (Map<?, ?>) value ;

			if(map.isEmpty()){

				return true ;

			}

		}else if(value instanceof String){

			String string = (String) value ;

			return isNull(string) ;

		}

		return false; 

	}

	

	

	/**

	 * 判断String类型是否为空 

	 *@author Hf

	 *@mailto:[email protected]

	 * */

	public static boolean isNull(String value){

		if(value == null){

			return true ;

		}

		if("".equals(value.trim())){

			return true ;

		}

		return false ;

	}

	

	/**

	 *去掉数组中为NULL 的字段

	 *@author Hf

	 *@mailto:[email protected]

	 * */

	public static <T> List<T> checkNull(T[] objs){

		if(isNull(objs)){

			return null;

		}

		List<T> objList = new ArrayList<T>(); 

		for(T obj : objs){

			if(!isNull(obj)){

				objList.add(obj) ;   

			}

		}

		if(isNull(objList)){

			return null;

		}

		return objList ;  

	}

	



	/**

	 *将容器转换成为数组

	 *@author Hf

	 *@mailto:[email protected]

	 * */

	public static <T> T[] collectionToArray(Collection<T> coll){ 

		T[] ts = null ;

		try {

			if(coll == null || coll.isEmpty()){

				return ts;

			}

			

			ts = collectionToArray(coll , null ) ;

		} catch (Exception e) {

			try {

				ts = collectionToArray(coll , Object.class ) ; 

			} catch (Exception e2) { 

				e2.printStackTrace( ) ; 

			}

		}

		return ts ; 

	}

	

	/**

	 * 将容器转换成为指定数组

	 *@author Hf

	 *@mailto:[email protected]

	 * */ 

	public static <T> T[] collectionToArray(Collection<T> coll , Class<?> clazz){

		Iterator<T> iterator = coll.iterator() ;

		T[] ts = null ;

		int x=0 ;

		while(iterator.hasNext()){

			T tempT = iterator.next() ; 

			if(x == 0){

				ts = (T[])Array.newInstance(clazz != null ? clazz : tempT.getClass() 

						, coll.size()) ;

			}

			ts[x++] = tempT ; 

		}

		return ts ;  

	}

	

}


 

 

你可能感兴趣的:(数组)