//第一種方式:最開始想到的是利用Set集合的不可重復性進行元素過濾
public static Object[] oneClear(Object[] arr){
Set set = new HashSet();
for(int i=0;i<arr.length;i++){
set.add(arr[i]);
}
return set.toArray();
}
//第二種方式:要想保持原數組的順序就使用有順序、不重復特點的鏈表的哈希集合
public static Object[] twoClear(Object[] arr){
LinkedHashSet<Object> temp = new LinkedHashSet<>();
for(int i=0;i<arr.length;i++){
temp.add(arr[i]);
}
return temp.toArray();
}
//第三種方式:創建一個list集合,然后遍歷數組將元素放入集合,再用contains()方法判斷一個集合中是否已存在該元素即可
public static Object[] threeClear(Object[] arr){
List list = new ArrayList();
for(int i=0;i<arr.length;i++){
if(!list.contains(arr[i])){
list.add(arr[i]);
}
}
return list.toArray();
}
//第四種方式:兩層循環遍歷原數組,然后逐個判斷是否和之后的元素重復,同時設立一個標記,用來分辨是否重復,根據標記將不重復的元素存入新數組
public static Object[] fourClear(Object[] arr){
int t=0;
//臨時數組
Object[] xinArr=new Object[arr.length];
for(int i=0;i<arr.length;i++){
//聲明標記,是否重復
boolean isRepeat = true;
for(int j=i+1;j<arr.length;j++){
//如果有重復元素,將標記置為false
if(arr[i]==arr[j]){
isRepeat = false;
break;
}
}
//標記為true表示沒有重復元素
if(isRepeat){
xinArr[t] = arr[i];
t++;
}
}
//去重后數組
Object[] newArr = new Object[t];
System.arraycopy(xinArr, 0, newArr, 0, t);
return newArr;
}
System.out.println("one:");
printArray(oneClear(arrs));
System.out.println("two:");
printArray(twoClear(arrs));
System.out.println("three:");
printArray(threeClear(arrs));
System.out.println("four:");
printArray(fourClear(arrs));
}
for(Object object:arr){
System.out.print(object+" ");
}
System.out.println("");
結果:
