【发布时间】:2012-09-04 13:47:48
【问题描述】:
我有三个 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 不会被添加
【问题讨论】:
-
检查的目的是什么?要确定这 3 个元素具体是什么?为问题提供更多背景信息会有所帮助。
-
请考虑用示例数据重申您的问题。目前尚不清楚您要完成什么。
-
你在列表上尝试的三种重复操作,它们完全不相关吗?如果是这种情况,那么所有三种方法都将具有相同的性能 (O(n))。
-
为什么你不想做'if(classFiles.contains(string)) //do sth'?
-
@Santosh 前两个是 O(n^3)。
标签: java loops for-loop foreach