gpt4 book ai didi

Java:如何循环三个List

转载 作者:行者123 更新时间:2023-12-02 12:26:37 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com