日期:2014-05-20 浏览次数:20577 次
import java.util.*;
public class Test_1
{
public static void main(String[] args)
{
List<String> a = new LinkedList<String>();
a.add("abc");
a.add("eee");
a.add("ooo");
a.add("fff");
Iterator<String> aa = a.iterator();
while(aa.hasNext())
{
aa.next();
aa.remove(); //此处用跌代器来移除,成功了。
}
System.out.println(a);
}
}
import java.util.*;
public class Test_1
{
public static void main(String[] args)
{
List<String> a = new LinkedList<String>();
a.add("abc");
a.add("eee");
a.add("ooo");
a.add("fff");
Iterator<String> aa = a.iterator();
while(aa.hasNext())
{
String x = aa.next();
a.remove(x); //此处用集合中的remove来移除,为什么不成功?
}
System.out.println(a);
}
}
public boolean remove(Object o) {
//二者都是通过寻找该元素实现删除的
if (o == null) {
for (Node<E> x = first; x != null; x = x.next) {
if (x.item == null) {
//看看unlink
unlink(x);
return true;
}
}
} else {
for (Node<E> x = first; x != null; x = x.next) {
if (o.equals(x.item)) {
unlink(x);
return true;
}
}
}
return false;
}
E unlink(Node<E> x) {
// assert x != null;
final E element = x.item;
//确定前后
final Node<E> next = x.next;
final Node<E> prev = x.prev;
if (prev == null) {//如果是第一个元素
first = next;
} else {
//将前一个元素的后指针指向他的后一个元素
prev.next = next;
//该元素不再有前置指针
x.prev = null;
}
if (next == null) {//如果是最后一个元素
last = prev;
} else {
//将后一个元素的前指针指向自己的前一个元素。
next.prev = prev;