1. 程式人生 > >去除陣列中空值的那些小辦法

去除陣列中空值的那些小辦法

前言

由於引數傳遞,可能存在不規範行為,為了排除這種情況,需要對引數進行處理。本來以為簡單的轉換,卻發現中間有點點坑,而且在百度時發現,有的實現思路確實不錯,特此記錄。

程式碼的實現功能

String to = ""1350***@163.com;;;;\"\";134***@163.com";"轉換成String[] array = ["135***@163.com,134***@163.com";],去除中間的空值與""

具體程式碼

1.利用StringBuffer

遍歷string[],先將不為空的值拼接成String,再利用split()方法

 	String[] aa = to.split(";");    
        //用StringBuffer來存放陣列中的非空元素,用“;”分隔
        StringBuffer sb = new StringBuffer();
        for(int i=0; i<aa.length; i++) {
            if("".equals(aa[i])) {
                continue;
            }
            sb.append(aa[i]);
            if(i != aa.length - 1) {
                sb.append(";");
            }
        }
        //用String的split方法分割,得到陣列
        aa = sb.toString().split(";");

2.利用List

遍歷string[],先將不為空的值放入list集合中,再利用toArray()方法


	String[] aa = to.split(";");    
        List<String> tmp = new ArrayList<String>();
        for(String str:aa){
            if(str!=null && str.length()!=0){
                tmp.add(str);
            }
        }
        aa = tmp.toArray(new String[0]);

3.利用List的迭代器(比較麻煩)

先轉換為list,再遍歷List去重空值 ,在利用toArray()方法轉為String[]

	String[] toEmailArray = to.split(";");
        List<String> toEmailList = new ArrayList( Arrays.asList(toEmailArray));;//1.將內部類的array變成util的array
        Iterator<String> iterator = toEmailList.iterator();
        while(iterator.hasNext()){
            String str = iterator.next();
            if (!Detect.notEmpty(str) || ("\"\"").equals(str)) {
                iterator.remove();   //2.注意這個地方
            }
        }
       toEmailArray = toEmailList.toArray(new String[0]);	//將list轉為string[]
       //或者 toEmailArray = toEmailList.toArray(new String[toEmailList.size()]);
   }