list移除对象
list正确的移除对象方法很多博客中都有
List<Integer> list = new ArrayList<Integer>(); list.add(1); list.add(2); list.add(2); list.add(3); list.add(4); System.out.println("----------list大小1:--"+list.size()); Iterator<Integer> it = list.iterator(); while(it.hasNext()){ Integer item = it.next(); if (2 == item) { it.remove(); } System.out.println(item); } System.out.println("最后输出=" + list.toString());
我根据如上代码,为了实现list超过2个以后remove的功能,先编写了如下代码
if (programTypeIdList.size() > 2) { Iterator<String> iter = programTypeIdList.iterator(); iter.next(); iter.next(); while (iter.hasNext()) { iter.remove(); } }
结果,如果list.size() = 3的时候就抛错了;
在http://blog.csdn.net/u014082714/article/details/52098214博客中找到的问题的原因:
对于iterator的remove()方法,需要我们注意的地方:
1、每调用一次iterator.next()方法,只能调用一次remove()方法。
2、调用remove()方法前,必须调用过一次next()方法。
最后代码如下
if (programTypeIdList.size() > 2) { Iterator<String> iter = programTypeIdList.iterator(); iter.next(); iter.next(); while (iter.hasNext()) { iter.next(); iter.remove(); } }