请教现在正在公司做Java项目的前辈们,迭代器中的三个方法的用法。
在“java.util”包下有一个“Iterator”接口,它里面有三个方法“hasNext()”“next()”和“remove()”可供使用。前两个方法我试用过,用的时候很顺利,但是第三个方法“remove()”很是令我费解。下面这段代码仅仅是我自己练习用的,小弟是初学者,且刚学集合,可能代码写得让各位前辈见笑了。代码如下(忽略“泛型”):
package day08.part1;import java.util.*;public class Test { public static void main(String[] args) { List list = new LinkedList(); list.add("Ⅰ"); list.add("Ⅱ"); list.add("Ⅲ"); list.add("Ⅳ"); list.add("Ⅴ"); list.add("Ⅵ"); list.add("Ⅶ"); list.add("Ⅷ"); list.add("Ⅸ"); list.add("Ⅹ"); Iterator it = list.iterator(); System.out.print("list = "); while(it.hasNext()){ System.out.print("[" + it.next() + "]"); } System.out.println(); list.remove("Ⅴ"); System.out.print("lsit = "); while(it.hasNext()){ System.out.print("[" + it.next() + "]"); } System.out.println(); }}
import java.util.*;public class Test123 { public static void main(String[] args) { List list = new LinkedList(); list.add("Ⅰ"); list.add("Ⅱ"); list.add("Ⅲ"); list.add("Ⅳ"); list.add("Ⅴ"); list.add("Ⅵ"); list.add("Ⅶ"); list.add("Ⅷ"); list.add("Ⅸ"); list.add("Ⅹ"); Iterator it = list.iterator(); System.out.print("list = "); while(it.hasNext()){ String s= (String)it.next(); System.out.print("[" +s + "]"); if(s.equals("Ⅴ")){ it.remove();//一次next只能使用一次 不能多用 } } System.out.println(); it=list.iterator();//迭代器到末尾了 需要重新获取 System.out.print("lsit = "); while(it.hasNext()){ System.out.print("[" + it.next() + "]"); } System.out.println(); }}
[解决办法]
每次调用过next后才可以调用remove
[解决办法]
list.remove("Ⅴ");
下面加上,remove之后,要重新指定。
it = list.iterator();
[解决办法]
上面已经说明用remove方法是移除list集合的最后一个元素,不能随意的移动集合中的所有位置的数。
[解决办法]
list.remove("Ⅴ");之后,要重新获取it = list.iterator();