Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java查找列表中的重复数字_Java_Pi - Fatal编程技术网

使用Java查找列表中的重复数字

使用Java查找列表中的重复数字,java,pi,Java,Pi,我正在开发Pi Finder应用程序。我知道有很多关于它的应用程序,但我想自己做。我用Leibniz公式做了,但由于重复的数字,它的运行速度非常慢。我使用列表存储。你能帮我在列表或数组中查找重复的数字吗 范例 {1,2,5,4,7,6,4,7,6,4,7,....} 我需要找到4,7,6您可以使用集合作为累加器来找到重复的元素,然后使用集合。频率检查给定的数字是否在列表中出现多次,如下所示: List<Integer> elements = new ArrayList<>

我正在开发Pi Finder应用程序。我知道有很多关于它的应用程序,但我想自己做。我用Leibniz公式做了,但由于重复的数字,它的运行速度非常慢。我使用列表存储。你能帮我在列表或数组中查找重复的数字吗

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

您可以使用
集合
作为累加器来找到重复的元素,然后使用
集合。频率
检查给定的数字是否在
列表中出现多次,如下所示:

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);   
}
LinkedHashSet
在此用于维护插入顺序。如果这不是必需的,那么您可以使用
哈希集

或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);
}
List elements=newarraylist(Arrays.asList(1,2,5,4,7,6,4,7));
Set tempAccumulator=新建LinkedHashSet();
Set resultSet=new LinkedHashSet();
for(整数:元素){
如果(!tempAccumulator.add(数字))
结果集。添加(编号);
}

如果要删除重复项,请使用
集合
。措辞不清楚。您是在
列表
中搜索重复整数还是在
列表
中搜索重复整数?谢谢。这非常有用。我忘记了答案。很抱歉。
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);
}