2014-04-12 95 views
0

我想从数组中删除重复(重复)元素。我正面临着困难。我尝试了几种方法。请问任何人都可以为我找到解决方案。从Int数组中删除重复(重复)元素

Input: 3,5,6,7,3,5,3,8 
Expected Output: 3 5 6 7 8 

我的代码:

package com.nanofaroque.DeleteRepElementInArray; 

public class DeleteElementRepetativeElement { 

    public static void main(String[] args) { 
     // Here is the input Array... 
     int[] arr = { 3, 5, 6, 7, 3, 5, 3, 8 }; 
     int end = arr.length;// finding the length of the array 
     for (int i = 0; i < end; i++) { 
      for (int j = i + 1; j < end; j++) { 
       if (arr[j] == arr[i]) { 
        for (int k = j; k < end; k++) { 
         arr[k] = arr[k + 1]; 
        } 
        end--; 
       } else { 
        j++; 
       } 
      } 
     } 
     for (int i = 0; i < arr.length; i++) { 
      System.out.println(arr[i]); 
     } 

    } 

} 
+0

什么是你期望的输出? – Braj

+0

预期输出:3 5 6 7 8 –

+0

所以你想从3,5,3删除。对? – Braj

回答

1

尝试org.apache.commons.lang.ArrayUtils

从结束

int[] arr = { 3, 5, 6, 7, 3, 5, 3, 8 }; 
int noOfItemsToBeDeleted=4; 
for (int i = 0; i < noOfItemsToBeDeleted; i++) { 
    if (arr.length > 0) { 
     arr = ArrayUtils.remove(arr, arr.length-1); 
    } 
} 
for (int i : arr) { 
    System.out.println(i); 
} 

删除开始删除

int[] arr = { 3, 5, 6, 7, 3, 5, 3, 8 }; 
int noOfItemsToBeDeleted=4; 
for (int i = 0; i < noOfItemsToBeDeleted; i++) { 
    if (arr.length > 0) { 
     arr = ArrayUtils.remove(arr, 0); 
    } 
} 
for (int i : arr) { 
    System.out.println(i); 
} 

- 编辑 -

按你最后的评论,你只想删除重复值来自一个数组。尝试使用Set<Integer>删除重复的值。

int[] arr = { 1, 2, 3, 5, 6, 7, 8, 9, 5, 4, 7, 8, 9, 3, 2, 1, 0, 3, 4, 8 }; 

Set<Integer> set = new LinkedHashSet<Integer>(); 
for (int i : arr) { 
    set.add(i); 
} 

// new array if you need it 
int[] newArray = new int[set.size()]; 
int index = 0; 
for (int i : set) { 
    System.out.print(i+" "); 
    newArray[index++] = i; 
} 

输出:

1 2 3 5 6 7 8 9 4 0 
+0

它会从开头或结尾删除四个元素。这不是我期望的,我正在寻找..谢谢你尝试 –

+0

你的预期产出是什么? – Braj

+0

'ArrayUtils'可以帮助你解决这个问题吗? – Braj