LinkedList中的方法remove()不起作用

Jou*_*uge 1 java

我正在努力使这个简单的Java练习工作,但它没有,我无法理解为什么.

这是我的代码:

public LinkedList<T> toSet()
{
    LinkedList<T> retList; 
    retList = lista;
    for(T elem1 : retList)
        for(T elem2 :retList)
        {
            if(retList.indexOf(elem1) == retList.indexOf(elem2)) 
                continue;
            else if(elem1.equals(elem2)) 
                retList.remove(elem1);
        }

    return retList;
}
Run Code Online (Sandbox Code Playgroud)

该方法应删除列表中出现多次的元素.我用eclipse调试它,我发现retList.remove(elem1)列表保持不变!

我的错误在哪里?

小智 5

你需要使用 .clone()

LinkedList<T> retList = (LinkedList<T>) lista.clone();

此外,您需要使用迭代器LinkedList在循环中删除一段时间.看到这个答案.


Pet*_*rey 5

简单的解决方案是使用Set.在你的情况下你可以使用.

public Set<T> toSet() {
   return new LinkedHashSet<T>(lista);
}
Run Code Online (Sandbox Code Playgroud)