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!你的回答完全回答了我的问题。非常感谢你!