[英]How to remove duplicates from a list
我有一个包含元素的列表,我想删除重复项。 我曾尝试这样做,但没有奏效。
这是代码:
//list is the original list containing duplicates
Iterator it1=list.iterator();//iterator1
while (it1.hasNext())
{
Iterator it2=list.iterator(); //iterator2
if(it1.next().equals(it2.next()))
{
//liststeps is the list without duplicates
liststeps.add(it1.next());
}
}
System.out.println("multiple list "+list.toString());
System.out.println("list "+liststeps.toString());
结果:
multiple list [Open, In Progress, Waiting Customer Test, Closed, Open, Step11, Step22, Open, In Progress, Waiting Customer Test, Closed]
list [In Progress, Step11, In Progress]
使用Set而不是 List。 您可以使用addAll()将列表添加到 Set,然后将其转换回 List 或仅使用 Set。 如果订单相关,请使用LinkedHashSet 。
只是一个建议:使用for-each而不是迭代器......这更容易:-)
Set<String> s = new HashSet<String>(list);
这将删除重复项,但可能会重新排序元素。 如果要保留(唯一)元素在原始列表中出现的顺序,请使用LinkedHashSet
:
Set<String> s = new LinkedHashSet<String>(list);
最后,如果您需要 output 作为列表,请将集合转换为列表,如下所示:
List<String> out = new ArrayList<String>(s);
你经常调用next
方式,它总是移动到下一个元素。
if(it1.next().equals(it2.next())) {
liststeps.add(it1.next());
}
此代码实际上在您与列表比较的元素之后添加了下一个元素。
正如 Tobiask 指出的那样,使用 Set/for-each。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.