Java:如何循环三个List<String>

标签 java loops for-loop foreach

我有三个List<String>变量:classFiles , usernames ,和fileDirectories 。我有一个String (一个字符串列表,但我会将列表中的每个字符串与下面的循环进行比较),其中包含每个列表中的一项。我想循环遍历所有三个列表,并检查所有三个列表中的一个值是否在字符串中

解决这个问题的最佳方法是什么?

for(String classFile:classFiles) {
//if contains classfile statement
  for(String username:usernames) {
  //if contains username statement
    for(String fileDirectory:fileDirectories) {
      //if contains filedirectory statement
    }
  }
}

for(String classFile:classFiles) {
  for(String username:usernames) {
    for(String fileDirectory:fileDirectories) {
      //if statement
    }
  }
}

for(String classFile:classFiles) {
  //make list of files that contain classFile
}

for(String username:usernames) {
  //remove items from list that do not contain username
}

for(String fileDirectory:fileDirectories){
  //remove items from list that do not contain fileDirectory
}

或者有更好的方法吗?

编辑:示例

classFiles - a1, a2, a3
usernames - noc1, noc2, noc3
fileDirectories - C:/projects/a1/noc1/example.java, C:/projects/a1/ad3/example.java

和要检查的字符串

String - C:/bin/a1/noc1/example.class

我想要做的是,如果 fileDirectory 和 String 都包含 classFile 和用户名,则将其添加到列表中

所以在这个例子中C:/bin/a1/noc1/example.class将被添加到列表中,但 C:/bin/a4/fd1/example.class不会或C:/bin/a3/noc3/example.class不会添加

最佳答案

当您执行删除操作时,for-each 循环并不是最佳选择。您应该使用 Iterator 并在迭代器上删除以避免并发修改异常。

相反

for(String fileDirectory:fileDirectories){
  //remove items from list that do not contain fileDirectory
}

你应该做类似的事情

Iterator iter = fileDirectores.iterator();
while(iter.hasNext())
{
//Get next
//Do your check 
iter.remove();
}

这会导致进行三个单独的迭代来完全满足您的要求。

关于Java:如何循环三个List<String>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12372953/

相关文章:

java - 在java中生成动态类型的数组列表

c++ - 使用 C++ 元组类型作为映射中的键

java - 这个java while循环在合并排序中做什么?

javascript - 如何在 react 页面上正确显示带有对象(来自另一个文件)的数组?

C++:像这样的 for 循环是如何工作的(使用指针)?

python - PyCharm 类型暗示​​怪异

java - 根据 HashMap 的值字段对 HashMap 的数组列表进行排序

java - GitLab CI 与 Maven 集成测试 - Java

c - OpenMP - 为什么比较次数会减少?

java - 为什么这些类之一没有继承我创建的接口(interface)?