1. 程式人生 > >常用的Java開發自定義工具類UtilsTools

常用的Java開發自定義工具類UtilsTools

日常開發中經常會遇到一些常用頻繁的資料型別轉換、日期格式轉換、非空校驗、避免重複造輪子寫程式碼一般我們一般會封裝一個常用的Utils開放工具類;

最近在開發中遇到陣列、list、string的轉換比較頻繁,公司的原有的工具類沒法滿足所以對原有的工具類進行修改,為了後面其他專案也能引用將原有工具類進行了優化:

UtilsTools.java


import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class UtilsTools {

	/**判斷傳入值是否為空*/
	public static boolean isEmpty(String str) {
		if ( str == null || "".equals(str) || "null".equals(str) || "undefined".equals(str)) {
			return true;
		} else {
			return false;
		}
	}
	
	/**判斷傳入值是否不為空*/
	public static boolean isNotEmpty(String str) {
		if (!"".equals(str) && str != null) {
			return true;
		} else {
			return false;
		}
	}
	
	/**
	 * String字串轉數字陣列
	 * @param ids:傳入的陣列字串
	 * @param Separator:分隔符支援','及'&'等自定義分隔符
	 * */
	public static Integer[] StrToArray(String ids,String Separator){
		try {
			List<Integer> list = new ArrayList<Integer>();
			String[] strs = ids.split(Separator);
			for (String id : strs) {
				if(!UtilsTools.isEmpty(id)){
					Integer id1 =  Integer.parseInt(id);
					if(!list.contains(id1)){
						list.add(id1);
					}
				}
			}
			return list.toArray(new Integer[list.size()]);
		} catch (RuntimeException e) {
			throw e;
		}
	}
	
	/**
	 * String字串轉String陣列
	 * @param ids:傳入的陣列字串
	 * @param Separator:分隔符支援','及'&'等自定義分隔符
	 * */
	public static String[] StrToArrayString(String ids,String Separator){
		try {
			String[] strs = ids.split(Separator);
			return strs;
		} catch (RuntimeException e) {
			throw e;
		}
	}
	
	/**
	 * 字串直接轉List<Integer>
	 * @param ids:傳入的陣列字串
	 * @param Separator:分隔符支援','及'&'等自定義分隔符
	 * */
	public static List<Integer> StrToIntegerList(String ids,String Separator){
		try {
			List<Integer> list = new ArrayList<Integer>();
			String[] strs = ids.split(Separator);
			for (String id : strs) {
				if(!UtilsTools.isEmpty(id)){
					Integer id1 =  Integer.parseInt(id);
					if(!list.contains(id1)){
						list.add(id1);
					}
				}
			}
			return list;
		} catch (RuntimeException e) {
			throw e;
		}
	}
	
	/**
	 * 字串直接轉List<String>
	 * @param ids:傳入的陣列字串
	 * @param Separator:分隔符支援','及'&'等自定義分隔符
	 * */
	public static List<String> StrToStringList(String ids,String Separator){
		try {
			List<String> list = new ArrayList<String>();
			String[] strs = ids.split(Separator);
			for (String str : strs) {
				if(!UtilsTools.isEmpty(str)){
					if(!list.contains(str)){
						list.add(str);
					}
				}
			}
			return list;
		} catch (RuntimeException e) {
			throw e;
		}
	}
	
	/**
	 * List<String>直轉String
	 * List<String>轉帶自定義分隔符字串
	 * @param list:傳入的List集合,內部引數String
	 * @param Separator:分隔符支援','及'&'等自定義分隔符
	 * */
	public static String StringListToStr(List<String> list,String Separator){
		String strs="";
		try {
			for (String str : list) {
				strs+=str+Separator;
			}
			//擷取最後一位多餘的分割符號(取分割符長度,長度大於1的分割符同樣有效)
			strs=strs.substring(0, strs.length()-Separator.length());
			return strs;
		} catch (RuntimeException e) {
			throw e;
		}
	}
	
	/**
	 * List<Integer>直轉String
	 * List<Integer>轉帶自定義分隔符字串
	 * @param list:傳入的List集合,內部引數Integer
	 * @param Separator:分隔符支援','及'&'等自定義分隔符
	 * */
	public static String IntgerListToStr(List<Integer> list,String Separator){
		String strs="";
		try {
			for (Integer str : list) {
				strs+=str.toString()+Separator;
			}
			//擷取最後一位多餘的分割符號(取分割符長度,長度大於1的分割符同樣有效)
			strs=strs.substring(0, strs.length()-Separator.length());
			return strs;
		} catch (RuntimeException e) {
			throw e;
		}
	}
	
	/**
	 * String[]直轉String
	 * String[]轉帶自定義分隔符字串
	 * @param String[]:傳入的String[]
	 * @param Separator:分隔符支援','及'&'等自定義分隔符
	 * */
	public static String IntgerArrayToStr(String[] array,String Separator){
		String strs="";
		try {
			for (String str : array) {
				strs+=str+Separator;
			}
			//擷取最後一位多餘的分割符號(取分割符長度,長度大於1的分割符同樣有效)
			strs=strs.substring(0, strs.length()-Separator.length());
			return strs;
		} catch (RuntimeException e) {
			throw e;
		}
	}
	
	/**
	 * Integer[]直轉String
	 * Integer[]轉帶自定義分隔符字串
	 * @param Integer[]:傳入的Integer[]
	 * @param Separator:分隔符支援','及'&'等自定義分隔符
	 * */
	public static String IntgerArrayToStr(Integer[] array,String Separator){
		String strs="";
		try {
			for (Integer str : array) {
				strs+=str.toString()+Separator;
			}
			//擷取最後一位多餘的分割符號(取分割符長度,長度大於1的分割符同樣有效)
			strs=strs.substring(0, strs.length()-Separator.length());
			return strs;
		} catch (RuntimeException e) {
			throw e;
		}
	}
	
	/**
	 * ','分割的字串轉Integer陣列
	 */
	public static Integer[] getInts(String ids){
		try {
			List<Integer> list = new ArrayList<Integer>();
			String[] strs = ids.split(",");
			for (String id : strs) {
				if(!UtilsTools.isEmpty(id)){
					Integer id1 =  Integer.parseInt(id);
					if(!list.contains(id1)){
						list.add(id1);
					}
				}
			}
			return list.toArray(new Integer[list.size()]);
		} catch (NumberFormatException e) {
			throw e;
		}
	}
	
	//補零
	public static String  fillZero(Integer num){
		if(num<10){
			return "0"+num;
		}
		
		return ""+num;
	}

	/**
	 * 將長時間格式字串轉換為時間 yyyy-MM-dd HH:mm
	 * 
	 * @param strDate
	 * @return
	 */
	public static Date toDate(String strDate) {
		if(isEmpty(strDate)){
			return null;
		}
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
		ParsePosition pos = new ParsePosition(0);
		Date strtodate = formatter.parse(strDate, pos);
		return strtodate;
	}
	
	/**
	 * 將長時間格式字串轉換為時間 yyyy-MM-dd
	 * 
	 * @param strDate
	 * @return
	 */
	public static Date toSortDate(String strDate) {
		if(isEmpty(strDate)){
			return null;
		}
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
		ParsePosition pos = new ParsePosition(0);
		Date strtodate = formatter.parse(strDate, pos);
		return strtodate;
	}

	public static String toDateString(Date date) {
		if (date == null) {
			return "";
		}
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
		return formatter.format(date);
	}
	
	public static String toLongDateHzString(Date date) {
		if (date == null) {
			return "";
		}
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
		return formatter.format(date);
	}
	
	public static String toShortDateHzString(Date date) {
		if (date == null) {
			return "";
		}
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日");
		return formatter.format(date);
	}
	
	
	public static String toDateFullString(Date date) {
		if (date == null) {
			return "";
		}
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return formatter.format(date);
	}
	public static String toShortDateString(Date date) {
		if (date == null) {
			return "";
		}
		SimpleDateFormat formatter = new SimpleDateFormat("MM月dd日");
		return formatter.format(date);
	}
	public static String toShortDateTimeString(Date date) {
		if (date == null) {
			return "";
		}
		SimpleDateFormat formatter = new SimpleDateFormat("MM月dd日 HH:mm");
		return formatter.format(date);
	}
	public static String toTimeString(Date date) {
		if (date == null) {
			return "";
		}
		SimpleDateFormat formatter = new SimpleDateFormat("HH:mm");
		return formatter.format(date);
	}
	
	public static String getEncoding(String str) {      
	       String encode = "GB2312";      
	      try {      
	          if (str.equals(new String(str.getBytes(encode), encode))) {      
	               String s = encode;      
	              return s;      
	           }      
	       } catch (Exception exception) {      
	       }      
	       encode = "ISO-8859-1";      
	      try {      
	          if (str.equals(new String(str.getBytes(encode), encode))) {      
	               String s1 = encode;      
	              return s1;      
	           }      
	       } catch (Exception exception1) {      
	       }      
	       encode = "UTF-8";      
	      try {      
	          if (str.equals(new String(str.getBytes(encode), encode))) {      
	               String s2 = encode;      
	              return s2;      
	           }      
	       } catch (Exception exception2) {      
	       }      
	       encode = "GBK";      
	      try {      
	          if (str.equals(new String(str.getBytes(encode), encode))) {      
	               String s3 = encode;      
	              return s3;      
	           }      
	       } catch (Exception exception3) {      
	       }      
	      return "";      
	   }     
	
	
	/**
	 * 比較兩個日期是否相等
	 */
	public static boolean compareDate(Date date1,Date date2){
		
		if((date1 == null && date2 == null) || (date1!=null && date2!=null && date1.compareTo(date2) == 0)){
			return true;
		}else{
			return false;
		}
	}
	
	
	/**
     * 拆分集合
     * @param <T>
     * @param resList  要拆分的集合
     * @param count    每個集合的元素個數
     * @return  返回拆分後的各個集合
     */
    public static  <T> List<List<T>> splitArray(List<T> resList,int count){
        
        if(resList==null ||count<1)
            return  null ;
        List<List<T>> ret=new ArrayList<List<T>>();
        int size=resList.size();
        if(size<=count){ //資料量不足count指定的大小
            ret.add(resList);
        }else{
            int pre=size/count;
            int last=size%count;
            //前面pre個集合,每個大小都是count個元素
            for(int i=0;i<pre;i++){
                List<T> itemList=new ArrayList<T>();
                for(int j=0;j<count;j++){
                    itemList.add(resList.get(i*count+j));
                }
                ret.add(itemList);
            }
            //last的進行處理
            if(last>0){
                List<T> itemList=new ArrayList<T>();
                for(int i=0;i<last;i++){
                    itemList.add(resList.get(pre*count+i));
                }
                ret.add(itemList);
            }
        }
        return ret;
    }
    //匹配正則表示式(只能是字母或數字)
    public static boolean matches(String content){
    	String regex = "^[A-Za-z0-9]+$";
		Pattern pattern = Pattern.compile(regex);
		Matcher match = pattern.matcher(content);
		if(match.matches()){
			return true;
		}else{
			return false;
		}
    }
  //匹配正則表示式
    public static boolean matches(String regex,String content){
		Pattern pattern = Pattern.compile(regex);
		Matcher match = pattern.matcher(content);
		if(match.matches()){
			return true;
		}else{
			return false;
		}
    }

}

支援非空校驗、常用日期格式轉換、String字串Array陣列List集合互轉,支援分割符內容自定義、表示式匹等;

UtilsTools工具類使用(帶註釋):

相關推薦

常用Java發自定義工具UtilsTools

日常開發中經常會遇到一些常用頻繁的資料型別轉換、日期格式轉換、非空校驗、避免重複造輪子寫程式碼一般我們一般會封裝一個常用的Util

Java 表單註冊常用正則表示式驗證工具常用正則表示式大集合。 1. 電話號碼 2. 郵編 3. QQ 4. E-mail 5. 手機號碼 ……

/* Java 表單註冊常用正則表示式驗證工具類,常用正則表示式大集合。 1. 電話號碼  2. 郵編  3. QQ  4. E-mail  5. 手機號碼  6. URL  7. 是否為數字  8. 是否為中文  9. 身份證  10. 域名  11. IP*/ pack

Android發自定義Listview的Adapter基以及通用ViewHolder的寫法

簡單的寫一個Adapter基類,不用每次寫adapter都呼叫一堆方法。 import android.widget.BaseAdapter; import java.util.ArrayList; import java.util.List; public abstra

SonarQube外掛發自定義規則(4)常用api-其他

1、獲取成員變數型別 @Override public void visitNode(Tree tree) { if (tree instanceof VariableTree) {

WordUtil java導出word工具

tac 生成word marker ger imp port chm 下載 ram import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.Buffere

Java用自定義型作為HashMap的key

str boolean 順序 string 函數 出現 print 重新 對象 ??需要重寫hashCode()和equals()方法才可以實現自定義鍵在HashMap中的查找。 public class PhoneNumber { private int pre

HttpUtils.java 網絡下載工具

arr tle sys 字節數 stream ati reat package you package Http;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.I

如何發自定義標簽

lin lns abcd tro lib case invoke java類 ext 一、簡介 原理:用戶自定義的 jsp 標記。當一個含有自定義標簽的 jsp 頁面被 jsp 引擎編譯成 servlet 時,tag 標簽被轉化成了對一個標簽處理器類的對象的操作。 標簽庫A

Java學習關於隨機數工具--Random

整數 boolean 下一個 構造 第一個 產生 byte cell 指定   Random類是偽隨機數生成器。之所以稱為偽隨機數(pseudorandom),是因為它們只是簡單的均勻分布序列。Random類定義了以下構造函數:     Random()     Rando

Java 通過Xml導出Excel文件,Java Excel 導出工具Java導出Excel工具

public emp cep sdf value 提交 bsp datetime rtm Java 通過Xml導出Excel文件,Java Excel 導出工具類,Java導出Excel工具類 ============================== ?Copyri

java Int數據工具

byte ++ res data 字節數組 pub urn 轉換成 ava  1、在使用tcp協議傳輸數據時,使用到的 Int 數據的工具類方法   //將 Int 數據轉換成字節數組   public static byte[] intToByteArray(int da

發自定義Mysql連接池

連接池使用第三方包 https://pypi.python.org/pypi/DBUtils tar -zxvf *.tar.gz * python3 setup.py build && python3 setup.py installimport time import py

Java 中的Array工具

查詢 bool als 二分 對數 score 對象 int 定義 1、boolean equals(array1,array2):比較兩個數組是否相等。import java.util.Arrays;public class Ch03 { public static vo

Java時間格式轉換工具

string stact 修改 stack time mil 日期格式轉換 pla gettime 把當前時間修改成指定時間 //把當前時間修改成指定時間 public String dateUtil(Integer seconds, String dateFo

Vue 發自定義插件學習記錄 -- 入門

dem isa 我們 isshowing 人的 暴露 doc directive 了解 首先,你需要了解插件實現的基本原理 插件基本原理: 我們都知道用Vue.use註冊插件,那你知道Vue.use(plugin) 幹了什麽? 以下是我對Vue官網的一些摘錄和個人的

java 分庫關聯查詢工具

      問題:   由於公司業務擴大,各個子系統陸續遷移和部署在不同的資料來源上,這樣方便擴容,但是因此引出了一些問題。   舉個例子:在查詢"訂單"(位於訂單子系統)列表時,同時需要查詢出所關聯的"使用者"(位於賬戶子系統)的姓名,而這時由於資料儲存在不同的資料來源上,

Java併發程式設計的藝術之八----java中的併發工具

1.等待多執行緒完成的countDownLatch CountDownLatch允許一個或多個執行緒等待其他執行緒完成操作。 執行緒中,讓一個執行緒等待最簡單的做法是使用join方法,執行緒A中呼叫B.join方法,說明讓執行緒A等待執行緒B完成之後再執行。 實現原理:不停檢查執行緒是否

利用 JSP 2 提供的 SimpleTagSupport 發自定義標籤

自定義標籤庫並不是 JSP 2 才出現的,JSP 1.1 版中已經增加了自定義標籤庫規範,自定義標籤庫是一種非常優秀的表現層元件技術。通過使用自定義標籤庫,可以在簡單的標籤中封裝複雜的功能。 為什麼要使用自定義標籤呢?主要是為了取代醜陋的 JSP 指令碼。在 HTML 頁面中插入 JSP 指令碼有

移動端Tap實戰技巧總結以及Vue混合發自定義Tap

最近在忙的專案是Vue的混合開發,因互動相對複雜,所以也踩了很多坑。在此做一下總結。 1.tap事件的實際應用 在使用tap事件時,老生常談的肯定是點透問題,大多情況下,在有滑屏互動的頁面時,我們會在根節點阻止預設行為以解決事件點透的bug。 阻止預設行為有優點,但也會相對帶來一些問題。 優點: (

Vue 發自定義外掛學習記錄 -- 入門

首先,你需要了解外掛實現的基本原理   外掛基本原理:   我們都知道用Vue.use註冊外掛,那你知道Vue.use(plugin) 幹了什麼? 以下是我對Vue官網的一些摘錄和個人的理解   Vue.use( plu