基本上,我有3个arraylists:项目,频率和uniqueitems.项目包含所有元素列表,例如:面包,黄油,果酱,黄油,牛奶,果酱.Uniqueitems包含独特的东西,例如:面包,黄油,果酱,牛奶.频率包含它们在项目中出现的次数,按唯一项目的顺序排列,例如:1,2,2,1.
但是我的一些元素不会出现if or else(Jam,见附图).一些元素,尽管如果进入if,不会从我的arraylist中删除(colddrink).听起来很傻,真的.但自从昨晚以来我一直在经历这个问题.Netbeans IDE.在我的代码上也使用在线编译器.它给出了与我的IDE相同的答案.那么,我的错误到底是什么?(附加输出)
int min_sup=2;
int v;
for (i=0;i<frequency.size();i++)
{
System.out.println(uniqueitems.get(i)+ " = "+ frequency.get(i));
}
for(i=0;i<frequency.size();i++)
{
v=frequency.get(i);
if(v<min_sup)
{
uniqueitems.remove(i);
frequency.remove(i);
System.out.println(uniqueitems.get(i)+ " is inside if.");
}
else
{
System.out.println(uniqueitems.get(i)+ " is not in if.");
}
}
System.out.println("\n\n");
for(i=0;i<uniqueitems.size();i++)
{
System.out.print(uniqueitems.get(i)+" ");
}
Run Code Online (Sandbox Code Playgroud)
当您调用时frequency.remove(i),列表中的前一个i+1元素将frequency成为新i的第th个元素,这意味着循环的下一次迭代将跳过该元素,因为i在每次迭代中都会递增.
每当删除元素时,您可以通过递减i来处理它:
for(i=0;i<frequency.size();i++)
{
v=frequency.get(i);
if(v<min_sup)
{
uniqueitems.remove(i);
frequency.remove(i);
System.out.println(uniqueitems.get(i)+ " is inside if.");
i--;
}
else
{
System.out.println(uniqueitems.get(i)+ " is not in if.");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
70 次 |
| 最近记录: |