我有三个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/