Java - 删除数组列表中的重复项
我正在开发一个使用 a 来存储的程序。该程序通过菜单提示用户,并允许用户选择要执行的操作。此类操作是将字符串添加到列表,打印条目等。我希望能够做的是创建一个名为.此方法将搜索并删除任何重复的值。我想在列表中保留一个重复值的实例。我还希望此方法返回已删除的重复项总数。ArrayList
Strings
removeDuplicates()
ArrayList
我一直在尝试使用嵌套循环来实现这一点,但我遇到了麻烦,因为当条目被删除时,索引会被更改,并且事情无法正常工作。从概念上讲,我知道我需要做什么,但我在代码中实现这个想法时遇到了麻烦。ArrayList
下面是一些伪代码:
从第一个条目开始;检查列表中的每个后续条目,看看它是否与第一个条目匹配;删除列表中与第一个条目匹配的每个后续条目;
检查完所有条目后,转到第二个条目;检查列表中的每个条目,看看它是否与第二个条目匹配;删除列表中与第二个条目匹配的每个条目;
对列表中的条目重复
以下是我到目前为止的代码:
public int removeDuplicates()
{
int duplicates = 0;
for ( int i = 0; i < strings.size(); i++ )
{
for ( int j = 0; j < strings.size(); j++ )
{
if ( i == j )
{
// i & j refer to same entry so do nothing
}
else if ( strings.get( j ).equals( strings.get( i ) ) )
{
strings.remove( j );
duplicates++;
}
}
}
return duplicates;
}
更新:似乎Will正在寻找一个家庭作业解决方案,该解决方案涉及开发算法以删除重复项,而不是使用Sets的实用解决方案。看看他的评论:
谢谢你的建议。这是作业的一部分,我相信老师打算让解决方案不包括集合。换句话说,我将提出一个解决方案,该解决方案将搜索并删除重复项,而无需实现.老师建议使用嵌套循环,这就是我正在尝试做的事情,但是在某些条目被删除后,我在索引方面遇到了一些问题。HashSet
ArrayList