在 Java 列表中查找重复数字

Find Repeated Digits In List with Java

我正在研究 Pi Finder app.I 知道有很多关于它的应用程序,但我想做 myself.I 用莱布尼茨公式做的,但由于重复,它的工作速度很慢numbers.I 我正在为 storage.Can 使用列表,你能帮我找到列表或数组中的重复数字吗?

例子 {1,2,5,4,7,6,4,7,6,4,7,....} 我需要找到 4,7,6

您可以使用 Set 作为累加器来查找重复元素,然后利用 Collections.frequency 检查给定数字是否在 List<Integer> 中多次出现,如下所示:

List<Integer> elements = new ArrayList<>(Arrays.asList(1,2,5,4,7,6,4,7,6,4,7));
Set<Integer> accumulator = new LinkedHashSet<>(); 
for (Integer number : elements) {
   if(Collections.frequency(elements, number) > 1)
       accumulator.add(number);   
}

现在 accumulator 包含:

[4, 7, 6]

LinkedHashSet 这里用来维护插入顺序。如果不需要,则可以改用 HashSet

或 JB Nizet 建议的性能更好的解决方案:

List<Integer> elements = new ArrayList<>(Arrays.asList(1,2,5,4,7,6,4,7,6,4,7));
Set<Integer> tempAccumulator = new LinkedHashSet<>();
Set<Integer> resultSet = new LinkedHashSet<>();
for (Integer number : elements) {
     if(!tempAccumulator.add(number))
        resultSet.add(number);
}