在java中重复数组并需要打印其余的数组元素

时间:2016-08-18 17:32:25

标签: java

请查看以下代码。它打印数组中唯一的重复元素。我需要打印其余的数组元素,请尽量帮助我。

public class DuplicateArray {
    public static void main(String args[]) {
        int array[] = { 10, 20, 30, 20, 40, 40, 50, 60, 70, 80 };// array of ten elements
        int size = array.length;
        System.out.println("Size before deletion: " + size);

        for (int i = 0; i < size; i++) {
            for (int j = i + 1; j < size; j++) {
                if ((array[i]== array[j])) { // checking one element with all the element
                   System.out.println(array[i]);
                }   
            }   
        }

输出继电器:

  

20
  40

这里我需要打印数组元素的其余部分吗?

3 个答案:

答案 0 :(得分:2)

在Java 8中,您可以使用IntStream轻松地从整数数组中删除重复项。

IntStream.of(array).distinct().forEach(System.out::println);

要打印它们而不是将它们放入数组中,请使用

{{1}}

答案 1 :(得分:0)

您可以使用Set来解决此问题。

List<Integer> list = Arrays.asList(ArrayUtils.toObject(array));
Set<Integer> set = new HashSet<Integer>(list);
List<Integer> withoutDuplicates = new ArrayList<Integer>(set);
int[] newArrayWithoutDuplicates = ArrayUtils.toPrimitive(withoutDuplicates.toArray(new int[withoutDuplicates.size()]));

最后,你有没有重复的数组。

答案 2 :(得分:0)

关于你想做什么的问题不是很明确,但我想你想要的是打印数组元素而不重复。

如果确实如此,则以下代码将执行此操作。(在输出后给出代码的说明)

public class DuplicateArray {
public static void main(String args[]) {
    int array[] = { 10, 20, 30, 20, 40, 40, 50, 60, 70, 80 };// array of ten elements
    int size = array.length;
    System.out.println("Size before deletion: " + size);

    boolean duplicateElement=false;//this becomes true if there is a duplicate element in the array before the occurrence of this element
    for (int i = 0; i < size; i++, duplicateElement=false) {
        for (int j = 0; j < i; j++) {
            if ((array[i]== array[j])) { // checking one element with all the elements
               duplicateElement=true; //Duplicate element found in array
               break;
            }   
        }
        if(!duplicateElement)
            System.out.println(array[i]);
       }
}
}  

输出:

  

10
  20个
  30个
  40个
  50个
  60个
  70个
  80

现在,这段代码中的想法不是从i + 1开始内循环而是直到array.size,从0开始直到i。 duplicateElement是一个标志变量,如果array [i]的重复元素存在于位置&lt;的数组中,则该变量的值变为true。一世。但是,当它是第一次出现的重复元素时,在array [i]之前没有其他相同的元素,只有在之后。因此,重复元素也只打印一次