java去除數組重復元素的四種方法

方法1:

需要一個存儲去重後元素的數組,然後兩層循環,外層遍歷原數組,內容逐個判斷是否和之後的元素重復,然後再提出來存入新的數組。方法System.arraycopy(被復制的數組,起始下標,接收的新數組,起始下標,結束下標);可以直接復制數組,既然這樣,我就沒必要糾結新數組的長度瞭,直接聲明一個跟原數組長度一樣的臨時數組,隻要記錄下去重後的元素個數,然後就可以確定去重後數組長度再去將臨時數組拷貝到新數組就行瞭。 

package testPro.test;
 
public class testDistinctArr {
 
	public static void main(String[] args) {
		String[] arr = new String[7];
		arr[0] = "a";
		arr[1] = "a";
		arr[2] = "b";
		arr[3] = "c";
		arr[4] = "d";
		
		System.out.println(arr.toString());
		for (String s : arr) {
			System.out.println(s);
		}
		System.out.println("===============");
		Object[] s  = ifRepeat(arr);
		for (Object o : s) {
			System.out.println(o);
		}
		
		
	}
 
	/**
     * 去掉數組中重復的元素
     *
     * @param arr
     * @return
     */
	//方法一:需要傳入一個Object數組,然後返回去重後的數組  
    public static Object[] ifRepeat(Object[] arr){  
        //用來記錄去除重復之後的數組長度和給臨時數組作為下標索引  
        int t = 0;  
        //臨時數組  
        Object[] tempArr = new Object[arr.length];  
        //遍歷原數組  
        for(int i = 0; i < arr.length; i++){  
            //聲明一個標記,並每次重置  
            boolean isTrue = true;  
            //內層循環將原數組的元素逐個對比  
            for(int j=i+1;j<arr.length;j++){  
                //如果發現有重復元素,改變標記狀態並結束當次內層循環  
                if(arr[i]==arr[j]){  
                    isTrue = false;  
                    break;  
                }  
            }  
            //判斷標記是否被改變,如果沒被改變就是沒有重復元素  
            if(isTrue){  
                //沒有元素就將原數組的元素賦給臨時數組  
                tempArr[t] = arr[i];  
                //走到這裡證明當前元素沒有重復,那麼記錄自增  
                t++;  
            }  
        }  
        //聲明需要返回的數組,這個才是去重後的數組  
        Object[]  newArr = new Object[t];  
        //用arraycopy方法將剛才去重的數組拷貝到新數組並返回  
        System.arraycopy(tempArr,0,newArr,0,t);  
        return newArr;  
    }  
}

去重效果:

方法2:

隻需要創建一個集合,然後遍歷數組逐一放入集合,隻要在放入之前用contains()方法判斷一下集合中是否已經存在這個元素就行瞭,然後用toArray轉成數組一切搞定。

 public static Object[]  ifRepeat2(Object[] arr){  
        //創建一個集合  
        List list = new ArrayList();  
        //遍歷數組往集合裡存元素  
        for(int i=0;i<arr.length;i++){  
            //如果集合裡面沒有相同的元素才往裡存  
            if(!list.contains(arr[i])){  
                list.add(arr[i]);  
            }  
        }  
          
        //toArray()方法會返回一個包含集合所有元素的Object類型數組  
        Object[] newArr = list.toArray();  
		return newArr;  
  
    }  

運行效果:

方法3:

利用Set集合無序不可重復的特性進行元素過濾。 

 
    public static Object[] ifRepeat3(Object[] arr){  
        //實例化一個set集合  
        Set set = new HashSet();  
        //遍歷數組並存入集合,如果元素已存在則不會重復存入  
        for (int i = 0; i < arr.length; i++) {  
            set.add(arr[i]);  
        }  
        //返回Set集合的數組形式  
        return set.toArray();  
    } 

運行效果:

方法4:

鏈表的哈希集合:有順序,不重復。

 public static Set<Object>  ifRepeat4(Object[] arr){  
          
        Set<Object> haoma = new LinkedHashSet<Object>();  
        for (int i = 0; i < arr.length; i++) {  
            haoma.add(arr[i]);  
        }  
		return haoma;  
          
          
    } 

運行效果:

到此這篇關於java去除數組重復元素的四種方法的文章就介紹到這瞭,更多相關java去除數組重復元素內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: