Java의 배열에서 중복 제거
배열은 고정 메모리 위치가 할당 된 유사한 유형의 요소를 저장할 수있는 컬렉션입니다. 배열을 사용하면 중복 값도 저장할 수 있습니다.
이 튜토리얼은 Java의 배열에서 여러 가지 방법으로 중복을 효율적으로 제거하는 방법을 보여줍니다.
임시 배열을 사용하여 Java 배열에서 중복 제거
이 방법에서 요점은 입력 배열을 순회 한 다음 원래 배열의 고유 요소를 임시 배열로 복사하는 것입니다. 이를 위해for
루프와if
문을 사용합니다. 마지막으로 임시 배열의 요소가 원래 배열에 복사되고 인쇄됩니다.
아래 코드를 참조하십시오.
public class Main{
public static int remove_Duplicate_Elements(int arr[], int n){
if (n==0 || n==1){
return n;
}
int[] tempA = new int[n];
int j = 0;
for (int i=0; i<n-1; i++){
if (arr[i] != arr[i+1]){
tempA[j++] = arr[i];
}
}
tempA[j++] = arr[n-1];
for (int i=0; i<j; i++){
arr[i] = tempA[i];
}
return j;
}
public static void main (String[] args) {
int arr[] = {56,56,77,78,78,98,98};
int length = arr.length;
length = remove_Duplicate_Elements(arr, length);
for (int i=0; i<length; i++)
System.out.print(arr[i]+" ");
}
}
출력:
56 77 78 98
위의 프로그램은 정렬 된 배열에서만 구현할 수 있습니다.
별도의 색인을 사용하여 Java 배열에서 중복 제거
여기서if
문은 요소가 다음 요소와 같은지 확인하는 데 사용됩니다. 그렇지 않은 경우 해당 특정 요소는 유사한 배열의 일부 인덱스에만 추가됩니다. 이것은 배열에서이 특정 요소가 한 번만 추가되었음을 보여주기 위해 수행됩니다.
이 방법은 배열이 정렬 된 경우에만 적용 할 수 있습니다.
다음 코드 스 니펫에서이를 구현합니다.
public class Main {
public static int remove_Duplicates(int a[], int n) {
if (n == 0 || n == 1) {
return n;
}
int j = 0;
for (int i = 0; i < n - 1; i++) {
if (a[i] != a[i + 1]) {
a[j++] = a[i];
}
}
a[j++] = a[n - 1];
return j;
}
public static void main(String[] args) {
int a[] = {11, 24, 24, 37, 37, 44, 47, 47, 56, 56};
int n = a.length;
int j = 0;
j = remove_Duplicates(a, n);
for (int i = 0; i < j; i++) System.out.print(a[i] + " ");
}
}
출력:
11 24 37 44 47 56
Arrays.sort()
메소드를 사용하여 Java의 배열에서 중복 제거
Arrays.sort()
함수는 Java에서 배열을 정렬 할 수 있습니다. 이 메소드는 Linked Lists, ArrayLists 등에 사용할뿐만 아니라 원시 데이터 유형에도 사용할 수 있습니다.
이 방법을 사용하면 시간 및 공간 복잡성이 수정되지 않습니다. 그것은 전적으로 코드 구현에 달려 있습니다.
예를 들면
import java.util.Arrays;
public class Main {
public static int remove_Duplicate_Elements(int arr[], int n) {
if (n == 0 || n == 1) {
return n;
}
int[] tempA = new int[n];
int j = 0;
for (int i = 0; i < n - 1; i++) {
if (arr[i] != arr[i + 1]) {
tempA[j++] = arr[i];
}
}
tempA[j++] = arr[n - 1];
for (int i = 0; i < j; i++) {
arr[i] = tempA[i];
}
return j;
}
public static void main(String[] args) {
int arr[] = {11, 7, 2, 2, 7, 8, 8, 8, 3};
Arrays.sort(arr);
int length = arr.length;
length = remove_Duplicate_Elements(arr, length);
for (int i = 0; i < length; i++) System.out.print(arr[i] + " ");
}
}
출력:
2 3 7 8 11
관찰 된 바와 같이, 정렬되지 않은 배열의 중복 요소도 정렬 된 배열과 동일한 방식으로 제거됩니다. 그러나 여기에서는 정렬되지 않은 배열을 정렬하는 데 하나의 추가 방법이 사용됩니다.
배열이 정렬되었는지 여부를 확인한 다음 중복 항목을 제거하는 다음 단계를 진행해야합니다.