欢迎访问宙启技术站
智能推送

Java函数:如何从列表中查找重复项?

发布时间:2023-12-09 05:41:12

要从列表中查找重复项,我们可以使用以下方法:

方法1:使用两层循环

我们可以使用两层循环来检查列表中的每个元素是否与其他元素重复。首先,我们将遍历列表的每个元素,并将其与其他元素进行比较。如果找到重复项,则将其添加到一个新的列表中。

public List<Integer> findDuplicates(List<Integer> list) {
    List<Integer> duplicates = new ArrayList<>();

    for (int i = 0; i < list.size(); i++) {
        for (int j = i + 1; j < list.size(); j++) {
            if (list.get(i).equals(list.get(j))) {
                if (!duplicates.contains(list.get(i))) {
                    duplicates.add(list.get(i));
                }
            }
        }
    }

    return duplicates;
}

这个方法的时间复杂度为O(n^2),其中n是列表的长度。

方法2:使用哈希集合

另一种更高效的方法是使用哈希集合来存储已经遍历过的元素。我们可以遍历列表的每个元素,并检查它是否已经在哈希集合中。如果存在,则将其添加到重复项列表中。

public List<Integer> findDuplicates(List<Integer> list) {
    List<Integer> duplicates = new ArrayList<>();
    HashSet<Integer> set = new HashSet<>();

    for (Integer num : list) {
        if (set.contains(num)) {
            duplicates.add(num);
        } else {
            set.add(num);
        }
    }

    return duplicates;
}

这个方法的时间复杂度为O(n),其中n是列表的长度。由于哈希集合的查找操作的时间复杂度是O(1),所以这个方法比前一种方法更高效。

总结:

通过使用两层循环或哈希集合,我们可以从列表中查找重复项。两种方法各有优劣,具体使用哪种方法取决于列表的大小和性能要求。如果列表较小且性能要求不高,可以使用两层循环的方法。如果列表较大或性能要求较高,可以使用哈希集合的方法。