我这个循环 是个嵌套循环,但是好像每次 外面的while做了一次虚幻后里面的那个循环就只做了一次,不能不能重复循环,不知道为什么,请高手指点
Iterator<OrgDto> it1 = list1.iterator();
while (it1.hasNext()) {
OrgDto org = new OrgDto();
org = it1.next();
flag = false;
List list=new ArrayList();
list=list2;
Iterator it2 = list.iterator();
it2=list2.iterator();
while (it2.hasNext()) {
OrgDto org2 = new OrgDto();
org2 = it1.next(); if (org.getOrgcode().equals(org2.getOrgcode())) {
flag = true;
//break;
}
}
System.out.println("==内循环2===" + "=="+ org.getOrgcode() + flag);
if (!flag) {
result.add(org); } }
Iterator<OrgDto> it1 = list1.iterator();
while (it1.hasNext()) {
OrgDto org = new OrgDto();
org = it1.next();
flag = false;
List list=new ArrayList();
list=list2;
Iterator it2 = list.iterator();
it2=list2.iterator();
while (it2.hasNext()) {
OrgDto org2 = new OrgDto();
org2 = it1.next(); if (org.getOrgcode().equals(org2.getOrgcode())) {
flag = true;
//break;
}
}
System.out.println("==内循环2===" + "=="+ org.getOrgcode() + flag);
if (!flag) {
result.add(org); } }
解决方案 »
- java 里 我想插入多行数据怎么写呀
- 客户端开发
- struts2 default-action-ref 的问题
- 请问谁知道SOA方面的书籍?SOA现在技术开始沉淀了吗?
- The type Employee is already defined?
- failed to lazily initialize a collection of role: no session or session was closed
- Hibernate中entity的equals问题
- 请问:如何根据.hbm.xml文件自动生成对应的表?
- 求助:怎么实现JTable的多行表头???
- 各位,如何使用事务处理在java可。郁闷中,顺便散分,跟者有分
- java新特性
- 金融软件开发和对日外包,哪个发展前景更好?
可以debugger的
或者在循环里面System。out。print出来数据
这2个迭代器不冲突的
结果应该是正常的
虽然你里面new 叻个ArrayList(),不过是个假相,马上就指向list2的内存地址叻。不知道ArrayList()有没有clone方法,clone一个。
while (it1.hasNext()) {
OrgDto org = (OrgDto)it1.next();
flag = false;
Iterator it2 = list2.iterator();
while (it2.hasNext()) {
OrgDto org2 = (OrgDto)it1.next();
if (org.getOrgcode().equals(org2.getOrgcode())) {
flag = true;
//break;
}
}
System.out.println("==内循环2===" + "=="+ org.getOrgcode() + flag);
if (!flag) {
result.add(org);
}
}
// list2 既然是ArrayList 类型的直接用酒行
里面可以不用迭代器
用for来
for里面可以指定下标循环出来
而用迭代器的话
底层把list的最后一个元素的下标记录在迭代器里面了
Iterator it2 = list.iterator();
多余的
while (it1.hasNext()) {
OrgDto org = new OrgDto();
org = it1.next();
flag = false;
Iterator it2 = list2.iterator();
while (it2.hasNext()) {
OrgDto org2 = new OrgDto();
org2 = it1.next(); if (org.getOrgcode().equals(org2.getOrgcode())) {
flag = true;
}
}
System.out.println("==内循环2===" + "=="+ org.getOrgcode() + flag);
if (!flag) {
result.add(org); } }
org2 = it1.next();
我实在是没看懂。
你既然不用list2的数据,那你对它循环什么呢?
还有,到了it1的最后一条数据了,那内层中的org2 = it1.next()不就异常了么?
这个不行 只能把 list2 进行克隆,或者将list2 的iterator 游标移动到第一个
while (it2.hasNext()) {
OrgDto org2 = new OrgDto();
org2 = it1.next(); if (org.getOrgcode().equals(org2.getOrgcode())) {
flag = true;
//break;
}
改成org2 = it2.next();试下