我有三个列表:listA
,listB
,listC
。Java - 重复两个列表,比较然后添加到另一个列表
listA listB
1,a,tf b,true
2,b,tf a,false
3,c,tf c,true
和我想有listC
是listA
+ listB
在listA
顺序(替换listA
的tf
与listB
的true
/false
)。
listC
1,a,false
2,b,true
3,c,true
这里是我的代码
Iterator a= listA.iterator();
Iterator b= listB.iterator();
while(a.hasNext()){
while(b.hasNext()){
if(String.valueOf(a.next()).split(",")[1].equals(String.valueOf(b.next()).split(",")[0])){
listC.add(String.valueOf(a.next()).replaceAll("tf", String.valueOf(b.next()).split(",")[1]));
}
}
}
与个别迭代器,而对于和listA的是数组listB分裂和索引,它工作正常,但是当我运行上面的代码,程序只是冻结。有什么想法吗?
我不知道这一点,但冻结使用迭代器的方式将最有可能不会产生你所期待的结果。你应该阅读'hasNext()'和'next()'是做什么的,因此你可能会意识到,在调用'hasNext()'之后多次调用'next()'你的if语句中的'a'和'b'以及b循环中的'a')不是一个好主意。 – Thomas
让Map代替ListB会让你的生活更轻松。同时为'1,a,tf'制作自己的班级可以帮助您更轻松地创造条件,而不是拆分字符串。如果您应用这些更改,您的代码可能看起来像for(YourClass yc:listA){yc.setTrueFalse(mapB.get(yc.getName()));}'。这实际上会更新listA的元素,但是您可以构建您的解决方案,从而轻松创建单独的listC。 –
Pshemo