我想从数组中删除重复(重复)元素。我这样做面临困难。我尝试了几种方法。任何人都可以找到我的解决方案。
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 :(得分: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