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添加或不添加
当您执行删除操作时 - 每个循环不是最佳选择.您应该使用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)
这导致有三个单独的迭代来完全满足您的要求.