在 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);
}
我正在研究 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);
}