Javaで、集合内の重複要素を見つける方法

集合内の重複要素を見つけるために 2 つの方法を利用できます。

方法1: 入れ子ループを用いて集合を走査し、各要素が他の要素と重複しているかどうかを比較する。

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class Main {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(2);
        list.add(4);
        list.add(1);
        
        Set<Integer> duplicates = new HashSet<>();
        for (int i = 0; i < list.size() - 1; i++) {
            for (int j = i + 1; j < list.size(); j++) {
                if (list.get(i).equals(list.get(j))) {
                    duplicates.add(list.get(i));
                }
            }
        }
        
        System.out.println("重复的元素:" + duplicates);
    }
}

出力結果です。

重复的元素:[1, 2]

方法2:HashMapを使用して各要素の出現回数をカウントし、出現回数が1を超える要素を見つける。

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(2);
        list.add(4);
        list.add(1);
        
        Map<Integer, Integer> countMap = new HashMap<>();
        for (Integer element : list) {
            countMap.put(element, countMap.getOrDefault(element, 0) + 1);
        }
        
        List<Integer> duplicates = new ArrayList<>();
        for (Map.Entry<Integer, Integer> entry : countMap.entrySet()) {
            if (entry.getValue() > 1) {
                duplicates.add(entry.getKey());
            }
        }
        
        System.out.println("重复的元素:" + duplicates);
    }
}

「結果を出力する」

重复的元素:[1, 2]
bannerAds