请查看以下代码。它打印数组中唯一的重复元素。我需要打印其余的数组元素,请尽量帮助我。
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
这里我需要打印数组元素的其余部分吗?
答案 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]之前没有其他相同的元素,只有在之后。因此,重复元素也只打印一次