JAVAでリスト内の重複したオブジェクトを取得する方法は何ですか?
List内の重複したオブジェクトを取得するためには、次の方法を使用することができます:
- リストをループして、各オブジェクトを比較し、重複するオブジェクトを別のリストに追加します。
- List list = …; // 元のリスト
List duplicates = new ArrayList<>(); // 重複するオブジェクトを保存するリストfor (int i = 0; i < list.size(); i++) {
T current = list.get(i);
for (int j = i + 1; j < list.size(); j++) {
T compare = list.get(j);
if (current.equals(compare)) {
if (!duplicates.contains(current)) {
duplicates.add(current);
}
break;
}
}
} - Java 8のStream APIとCollectors.groupingByメソッドを組み合わせて、グループ化し、重複したオブジェクトをフィルタリングします。
- List list = …; // 原始のリストList duplicates = list.stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
.entrySet()
.stream()
.filter(entry -> entry.getValue() > 1)
.map(Map.Entry::getKey)
.collect(Collectors.toList());
上記の方法では、比較対象の種類であるTを実際のニーズに応じて置き換えることができます。