我有三个列表:listA
, listB
, listC
。
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 的单独迭代器-while 拆分和索引,它工作正常,但是当我运行上面的代码时,程序只是冻结。有什么想法吗?
你真的不远了。迭代器可能会令人困惑,所以我倾向于避免使用它们。
我实在看不出其中的无限循环是在你的代码-我期望的NullPointerException
,因为你打电话a.next()
,并b.next()
多次。
如果您更改代码以删除迭代器,它可以正常工作:
List<String> listA = Arrays.asList("1,a,tf", "2,b,tf", "3,c,tf");
List<String> listB = Arrays.asList("b,true", "a,false", "c,true");
List<String> listC = new ArrayList<>();
for(String a : listA)
{
for (String b : listB)
{
if (String.valueOf(a).split(",")[1].equals( String.valueOf(b).split(",")[0] ) )
{
listC.add(String.valueOf(a).replaceAll("tf", String.valueOf(b).split(",")[1]));
}
}
}
System.out.println(listC.toString());
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句