Java:如何遍历三个List <String>

Hip*_*ray 2 java foreach loops for-loop

我有三个List<String>变量:classFiles,usernames,和fileDirectories.我有一个String(一个字符串列表,但我将比较列表中的每个字符串和下面的循环),它包含每个列表中的一个项目.我想遍历所有三个列表并检查所有三个列表中的一个值是否在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
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

要么

for(String classFile:classFiles) {
  for(String username:usernames) {
    for(String fileDirectory:fileDirectories) {
      //if statement
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

要么

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
}
Run Code Online (Sandbox Code Playgroud)

或者有更好的方法吗?

编辑:示例

classFiles - a1, a2, a3
usernames - noc1, noc2, noc3
fileDirectories - C:/projects/a1/noc1/example.java, C:/projects/a1/ad3/example.java
Run Code Online (Sandbox Code Playgroud)

和要检查的字符串

String - C:/bin/a1/noc1/example.class
Run Code Online (Sandbox Code Playgroud)

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

因此在此示例C:/bin/a1/noc1/example.class中将添加到列表中但C:/bin/a4/fd1/example.class不会C:/bin/a3/noc3/example.class添加或不添加

kos*_*osa 9

当您执行删除操作时 - 每个循环不是最佳选择.您应该使用Iterator并删除迭代器以避免并发修改异常.

代替

for(String fileDirectory:fileDirectories){
  //remove items from list that do not contain fileDirectory
}
Run Code Online (Sandbox Code Playgroud)

你应该做点什么

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

这导致有三个单独的迭代来完全满足您的要求.