黑马程序员技术交流社区
标题:
关于迭代器与增强for循环的问题
[打印本页]
作者:
edithe
时间:
2015-5-29 16:13
标题:
关于迭代器与增强for循环的问题
本帖最后由 edithe 于 2015-5-29 17:19 编辑
刚才看见以为同学的问题,试着写了下代码,结果他的问题解决了,我又产生了问题,下面是他的问题
http://bbs.itheima.com/thread-199984-1-1.html
(出处: 黑马程序员IT技术论坛)
在遍历中我发现用迭代器的方式,却不能求到结果,但是用增强for循环却可以,for循环底层靠的不还是迭代器吗?
public static void main(String[] args) {
ArrayList<String> listA = new ArrayList<String>();
listA.add("2008");
listA.add("2007");
ArrayList<String> listB = new ArrayList<String>();
listB.add("20089087");
listB.add("20081234");
listB.add("20200801");
listB.add("20071555");
ListIterator<String> itA = listA.listIterator();
ListIterator<String> itB = listB.listIterator();
while(itB.hasNext()){
String B= itB.next();
while(itA.hasNext()){
if(B.startsWith(itA.next())){
System.out.println(B);
}
}
}
// for(String b :listB){
// for(String a :listA){
// if(b.startsWith(a))
// System.out.println(b);
// }
复制代码
觉得问题出现在String B= itB.next(); 这行代码不知道对不对,求助
作者:
shenz
时间:
2015-5-29 16:59
第二个迭代器的问题,游标已经下去了,再循环,没有内循环了
作者:
志行
时间:
2015-5-29 17:13
刚才的帖子已经给出了答案
问题出在嵌套循环里用itA.hasNext(),当B中的第一个元素把A中的所有元素都遍历一次的时候,指针已经到了A集合尾部下个元素为空,必须让指针重新回到A集合头部才可以再次遍历A集合 也就是说 内部的嵌套其实只执行了一遍,我也不知道如果每次循环让迭代器指针都回到最初~~~~~~~~~~~~~我就只能提醒你 别人给了你答案了~~~~
作者:
志行
时间:
2015-5-29 17:30
ackage jihekuangjia;
import java.util.*;
class jihekuangjia_test1
{
public static void main(String[] args) {
ArrayList<String> listB = new ArrayList<String>();
listB.add("20089087");
listB.add("20081234");
listB.add("20050801");
listB.add("20071555");
ListIterator<String> itB = listB.listIterator();
while(itB.hasNext())
{
String B= itB.next();
ArrayList<String> listA = new ArrayList<String>();
listA.add("2008");
listA.add("2007");
ListIterator<String> itA = listA.listIterator();
while(itA.hasNext())
{
String A = itA.next();
if(B.startsWith(A))
{
System.out.println(B);
}
}
}
}
}
表示应该成功了 输出的结果是三个 :
20089087
20081234
20071555
作者:
志行
时间:
2015-5-29 17:34
老夫再水一下 混一个黑马币 楼主不要介意~~~~
作者:
麦兜是个猪
时间:
2015-5-29 18:17
问题不是出在那里,内循环完成一次后,A迭代器已经读到末尾了,当外循环第二次读到内循环时,itA.hasNext()返回的已经是false了,就不再读里边的代码了,这个代码是不用每次都new一个ArrayList的
import java.util.*;
class Demo
{
public static void main(String[] args)
{
ArrayList<String> listA = new ArrayList<String>();
ArrayList<String> listB = new ArrayList<String>();
listB.add("20089087");
listB.add("20081234");
listB.add("20200801");
listB.add("20071555");
ListIterator<String> itB = listB.listIterator();
while(itB.hasNext())
{
listA.clear();
listA.add("2008");
listA.add("2007");
ListIterator<String> itA = listA.listIterator();
String B= itB.next();
while(itA.hasNext())
{
if(B.startsWith(itA.next()))
{
System.out.println(B);
}
}
}
}
}
复制代码
作者:
微凉的暮色
时间:
2015-5-29 18:57
:o
还真是游标的问题
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2