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

标签 java list iterator

我有三个列表:listA , listB , listC .

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

我想要listC成为listA + listBlistA的顺序(将 listAtf 替换为 listBtrue/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 被分割和索引时,它工作得很好,但是当我运行上面的代码时,程序就卡住了。有什么想法吗?

最佳答案

你真的离我们不远了。迭代器可能会令人困惑,因此我倾向于避免使用它们。

我无法真正看到代码中无限循环的位置 - 我预计会出现 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());

关于Java - 迭代两个列表,比较然后添加到另一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45170756/

相关文章:

java - Springboot @retryable 不重试

java - 在 Activity 中启动前台服务

image - 查找 Google Container Registry 公共(public)镜像列表

list - 如何获得两个列表之间的差异?

java - 未知的并发修改异常java使用Iterator和Vector

java - 重复数据删除迭代器

Groovy .each 与 .collect

java - ArrayList.clear() 和 ArrayList.removeAll() 有什么区别?

java - 如何在部分更新PATCH Spring Boot MVC时自动添加Bean Validation

Python - 从txt文件导入列表,迭代并作为参数传递