Java の重複排除メソッドは何ですか?
Java配列の重複を除去する方法は、以下の通りです。
- Setを利用する: 配列の要素をSet集合に保存する. Set集合は重複した要素を許可しないので、重複した要素は自動的に削除される. 最後にSet集合を配列に変換すればOK.
int[] array = {1, 2, 3, 4, 3, 2, 1};
Set<Integer> set = new HashSet<>();
for (int num : array) {
set.add(num);
}
int[] result = new int[set.size()];
int index = 0;
for (int num : set) {
result[index++] = num;
}
- リストへ配列の要素を入れ、Java 8 のストリームで重複を除去し、配列へ戻す。
int[] array = {1, 2, 3, 4, 3, 2, 1};
List<Integer> list = new ArrayList<>();
for (int num : array) {
if (!list.contains(num)) {
list.add(num);
}
}
int[] result = list.stream().mapToInt(Integer::intValue).toArray();
- 配列をループして各要素ごとに、その後の要素をループして同じ要素があったらスキップ、なければ新しい配列に追加する、二重ループを使用する。
int[] array = {1, 2, 3, 4, 3, 2, 1};
int length = array.length;
for (int i = 0; i < length; i++) {
for (int j = i + 1; j < length; j++) {
if (array[i] == array[j]) {
array[j] = array[length - 1];
length--;
j--;
}
}
}
int[] result = Arrays.copyOf(array, length);
以上、3種類の一般的な配列を重複しないようにする方法は、実際の状況に応じて適切な方法を選択することです。