链表删除问题    (一个链表的删除)
我在record类中定义如下
ublic static List<Record> sort2(List<Record> recordList,int nScore ){

for(int i = 0;i<recordList.size();i++){
if(Integer.parseInt(recordList.get(i).getScore())<nScore)
recordList.remove(i);
}
for(Record record1:recordList){
System.out.println(record1.getScore());
}
return recordList;
}之后在实现类中调用下面代码
int sort=98;
aList=Record.sort2( aList, sort);
System.out.println("asizelist()"+sort+aList.size());结果执行得到如下
asizelist()5023
88
88
98
98
75
88
78
78
98
76
98
98
98
98
asizelist()9814可以看到是错误。  要求是去掉小于98的记录 , 结果现在88等的还在 。 
这个错误是如何产生,  如何修改代码完善?

解决方案 »

  1.   

    for(int i = 0;i <recordList.size();i++){ 
    if(Integer.parseInt(recordList.get(i).getScore()) <nScore) 
    {
    recordList.remove(i); 
    i--;//这里变回去,把3位置上的移走后,原来的4变成了3,所以这个i暂时不变就行了
    }
      

  2.   

    注意,remove以后,List的size以及索引值都发生了变化所以代码应该为:
    for(int i = 0;i <recordList.size();i++){
    if(Integer.parseInt(recordList.get(i).getScore()) <nScore) 
    recordList.remove(i);
    i--;  //因为索引值发生了变化

    for(Record record1:recordList){ 
    System.out.println(record1.getScore()); 
      

  3.   

    貌似少了一对{
    }
    i--;应该在if里边执行
      

  4.   

    不要这样遍历Listwhile(recordList.hasNext)
    {
       Record record = recordList.next;
       if(Integer.parseInt(record.getScore()) < nScore) 
           recordList.remove(record);
    }
      

  5.   

    能删除,list申请空间时就会大好多
    我的方法同
    while(recordList.hasNext) 

      Record record = recordList.next; 
      if(Integer.parseInt(record.getScore()) < nScore) 
          recordList.remove(record); 
    }
      

  6.   

    删除的时候,最好从最后一个开始
    for(int i = lst.size-1;i>-1;i--)
    这样就不用管索引位置了。
      

  7.   

    if(Integer.parseInt(recordList.get(i).getScore()) <nScore) 

    recordList.remove(i); 
    i--;//这里变回去,把3位置上的移走后,原来的4变成了3,所以这个i暂时不变就行了