当前位置: 代码迷 >> J2SE >> 有关集合操作时的错误
  详细解决方案

有关集合操作时的错误

热度:50   发布时间:2016-04-24 02:21:08.0
有关集合操作时的异常
import java.util.*;
//程序将一个序列里为0的元素删除
public class Test
{
public static void main(String[]args)
{
LinkedList list=new LinkedList();
//添加10个随机整数
for(int i=0;i<10;++i)
{
list.add(new Integer((int)(10*Math.random())));
}
//为了确保序列里有0
list.add(new Integer(0));
list.add(new Integer(0));

System.out.println("删除0之前的元素序列:");
displayList(list);


System.out.println("删除0之后的元素序列:");
delete0(list);
displayList(list);

}
public static void displayList(List list)
{
ListIterator iterator=list.listIterator();
while(iterator.hasNext())
{
System.out.print(iterator.next()+" ");
}
System.out.println();
}
//删除值为0的元素
public static void delete0(List list)
{
ListIterator iterator=list.listIterator();
while(iterator.hasNext())
{
Integer intObj=(Integer)(iterator.next());
if(intObj.equals(new Integer(0)));
{
list.remove(intObj);
}
}
}
}

------解决方案--------------------
你使用的删除方法有问题,还有用的迭代器也不对,下面是正确的代码
Java code
import java.util.LinkedList;import java.util.List;import java.util.ListIterator;import java.util.Iterator;public class A2 {    public static void main(String[]args){        LinkedList list=new LinkedList();        //添加10个随机整数        for(int i=0;i<10;++i){            list.add(new Integer((int)(10*Math.random())));        }        //为了确保序列里有0        list.add(new Integer(0));        list.add(new Integer(0));        System.out.println("删除0之前的元素序列:");        displayList(list);        delete0(list);        System.out.println("删除0之后的元素序列:");        displayList(list);    }    public static void displayList(List list){        ListIterator iterator=list.listIterator();        while(iterator.hasNext())        {            System.out.print(iterator.next()+" ");        }        System.out.println();    }    //删除值为0的元素    public static void delete0(List list)    {        Iterator iterator=list.iterator();//        ListIterator iterator=list.listIterator();        while(iterator.hasNext())        {            Integer intObj=(Integer)(iterator.next());            if(intObj.equals(0)) //这里删除原来代码的一个分号            {//                list.remove(intObj); //这里使用iterator的remove进行删除                iterator.remove();            }        }    }}
------解决方案--------------------
这个和iterator的具体实现有关系的:
坛子里的帖子:
http://topic.csdn.net/u/20110824/09/17ce3e32-c6c0-4413-afe5-2d98df864aee.html
  相关解决方案