java数组列表。移除不正常工作的部件
我有一个已排序的整数数组,想要删除重复项,我编写了以下代码
package practice;
import java.util.*;
public class pb1 {
public static void removeDup(int[] theArray){
ArrayList<Integer> hold=new ArrayList<Integer>();
for(int i=0;i<theArray.length-1;i++){
hold.add(theArray[i]);
//System.out.println(hold);
}
for(int i=0;i<hold.size()-1;i++){
if(hold.get(i)==hold.get(i+1)){
hold.remove(i);
}
}
System.out.println(hold);
}
public static void main(String[]args){
int[] now={1,1,2,2,3,4,4,4,5,5,5,5};
removeDup(now);
}
}
正在尝试使用arraylist删除重复项。移除方法,但我仍然可以在打印的arraylist中看到重复项。我不知道为什么,有人能帮我吗?谢谢
# 1 楼答案
为什么要手动删除重复项?可以将列表复制到集合以删除重复项,然后再次从集合复制到列表。像这样的
# 2 楼答案
向后迭代。向前删除项目将删除当前元素,然后增加计数器/索引,从而跳过可能的重复项。将循环替换为:
编辑:您的代码在连续三个4点失败 当索引位于前4位时:
{1,1,2,2,3,>;4,4,4,5,5,5}
它检查下一个元素。它删除了当前元素,因为它看到前面有一个4,但这就是bug出现的地方
删除前4个后,后续数组元素向后移动,然后增加计数器,从而跳过其他4个。因此,重复的
# 3 楼答案
另一种解决方案。这充分利用了
Set
不允许重复条目的事实,并大大简化了代码输出:
# 4 楼答案
试试这个: