Java - 迭代两个列表,比较然后添加到另一个列表

时间:2017-07-18 15:12:10

标签: java list iterator

我有三个列表:listAlistBlistC

listA        listB
1,a,tf       b,true
2,b,tf       a,false
3,c,tf       c,true

我希望listClistA + listB的顺序排列listA(替换listA' s {{1与tf' s listB / true)。

false

这是我的代码

listC
1,a,false
2,b,true
3,c,true

使用单独的迭代器 - 而listA和listB被拆分和索引,它工作正常,但是当我运行上面的代码时,程序就会冻结。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你真的不远了。迭代器可能会让人感到困惑,所以我倾向于避免使用它们。

我无法真正看到代码中无限循环的位置 - 我期待NullPointerException,因为您多次调用a.next()b.next()。< / p>

如果您更改代码以删除迭代器,它可以正常工作:

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());