LinkedList 的 E remove(int index) 为什么删不干净


public class TestCollection {

    public static void main(String[] args) throws InterruptedException {
        List<Person> tl = new LinkedList<Person>(){{
            add(new Person(String.valueOf(1),true,18));
            add(new Person(String.valueOf(2),true,18));
            add(new Person(String.valueOf(3),true,18));
            add(new Person(String.valueOf(4),true,18));
            add(new Person(String.valueOf(5),true,18));
        }};
        for(int i=6;i<15;i++){
            tl.add(2,new Person(String.valueOf(i),true,18));
        }

        System.out.println(tl.size());
        for (int i=0;i<tl.size();i++)
            System.out.println(tl.remove(i));

        System.out.println(tl.size());
    }
}

@Data
@NoArgsConstructor
@AllArgsConstructor
class Person{

    private String name;
    private Boolean lady;
    private Integer age;

    @Override
    public boolean equals(Object obj) {
        System.out.println("我调用了Equals------------->>"+obj.toString());
        return this.toString().equals(obj.toString());
    }
}
/**--------------------------------执行结果------------------------------*

14
Person(name=1, lady=true, age=18)
Person(name=14, lady=true, age=18)
Person(name=12, lady=true, age=18)
Person(name=10, lady=true, age=18)
Person(name=8, lady=true, age=18)
Person(name=6, lady=true, age=18)
Person(name=4, lady=true, age=18)
7

当LinkedList的remove方法执行完毕之后,为什么没有彻底清理List中的值

for (int i=0;i<tl.size();i++)
System.out.println(tl.remove(i));
改为:
for (int i=0;i<tl.size();i++)
{
System.out.println(tl.remove(i));
i--;
}

应该能删除干净的,用removeAll,或者clear试试