本人写的一个关于整型数组去重的算法,望指正!
package Array;
import java.util.Arrays;
public class ArrayWipeRepeat {
public static void main(String[] args) {
int[] arr = {1,2,4,4,5,2,4,3,1,5};
int[] newArr = wipeRepeat(arr);
System.out.println(Arrays.toString(newArr));
}

public static int[] wipeRepeat(int[] arr){
int index = 1;
int[] newArr = new int[arr.length];
newArr[0] = arr[0];
for(int i=0;i<arr.length;i++){
for(int j=0;j<index;j++){
if(arr[i]!=newArr[j]){
if(j==index-1){
newArr[index++] = arr[i];
}
}else{
break;
}

}
}
arr = Arrays.copyOf(newArr, index);
return arr;


}}

解决方案 »

  1.   

    if (arr[i]!=newArr[j])并且就j!=index-1就break,没问题吗?
    我觉得应该if (arr[i]==newArr[j])设个相同flag为true,然后break,让后判断相同flag为false则追加到newArr
      

  2.   


    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Integer[] arr= {1,2,4,4,5,2,4,3,1,5};
    List<Integer> list=Arrays.asList(arr);
    list=list.stream().distinct().collect(Collectors.toList());
    for(int i=0;i<list.size();i++) {
    System.out.print(list.get(i));
    }
    }
      

  3.   

    上面可以直接:
    System.out.print(list.toString());
      

  4.   

    放到set中,遍历完了,再拿出来。也可以用散列法