Java 如何使用迭代器类从列表中删除重复的元素?

Java 如何使用迭代器类从列表中删除重复的元素?,java,list,iterator,Java,List,Iterator,我正在学习迭代器类以及如何使用它,我们的老师给了我们一个问题,如何使用这个类来循环遍历整个列表,找到重复项并删除它们。我尝试了以下代码: void removeDuplicates(List<String> list) { Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { if (list.contains(iterator.next()

我正在学习
迭代器
类以及如何使用它,我们的老师给了我们一个问题,如何使用这个类来循环遍历整个
列表
,找到重复项并删除它们。我尝试了以下代码:

void removeDuplicates(List<String> list) {

    Iterator<String> iterator = list.iterator();

    while (iterator.hasNext()) {

        if (list.contains(iterator.next())) {

            iterator.remove();

        }

    }

}
void removeDuplicates(列表){
迭代器迭代器=list.Iterator();
while(iterator.hasNext()){
if(list.contains(iterator.next())){
iterator.remove();
}
}
}

当然,这个代码不起作用,因为每个元素都在
列表中
本身,所以它会删除列表中的每个元素,使其为空。我如何纠正这个错误观念(特别是if条件语句),这样我就能够使
迭代器
删除所有重复的元素?

我不喜欢对原始对象进行直接操作,可能是在多线程并发环境中

void removeDuplicates(List<String> list) {
    Set set = new HashSet();
    Iterator<String> iterator = list.iterator();

    while (iterator.hasNext()) {
        Object element = iterator.next();
        if (!set.add(element)){
            iterator.remove();
        }
    }
}
void removeDuplicates(列表){
Set=newhashset();
迭代器迭代器=list.Iterator();
while(iterator.hasNext()){
Object元素=iterator.next();
如果(!set.add(元素)){
iterator.remove();
}
}
}

欢迎来到StackOverflow!你的回答完全回答了我的问题。非常感谢你!