我有三個列表: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