Java の配列から重複を削除する
- 一時配列を使用して、Java の配列から重複を削除する
- 別のインデックスを使用して、Java の配列から重複を削除する
-
Arrays.sort()
メソッドを使用して、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
ステートメントを使用して、要素が次の要素と等しいかどうかを確認します。そうでない場合、その特定の要素は、その同様の配列の一部のインデックスにのみ追加されます。これは、配列内でこの特定の要素が 1 回だけ追加されることを示すために行われます。
この方法は、配列がソートされている場合にのみ適用できます。
これは、次のコードスニペットで実装します。
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 で配列を並べ替えることができます。このメソッドは、リンクリスト、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
観察されたように、ソートされていない配列からの重複要素も、ソートされた配列と同じ方法で削除されます。ただし、ここでは、ソートされていない配列をソートするために 1つの追加メソッドが使用されています。
配列がソートされているかどうかを確認してから、重複を削除する次のステップに進む必要があることに注意してください。