gpt4 book ai didi

Java - 删除 ArrayList 中的重复项

转载 作者:IT老高 更新时间:2023-10-28 21:03:05 26 4
gpt4 key购买 nike

我正在开发一个使用 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 的索引方面遇到了一些问题。

最佳答案

为什么不使用像 Set 这样的集合(以及像 HashSet 这样的实现)自然地防止重复?

关于Java - 删除 ArrayList 中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2435156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com