gpt4 book ai didi

java - 从列表中删除元素会导致 for 循环不增加?

转载 作者:行者123 更新时间:2023-12-01 21:37:05 25 4
gpt4 key购买 nike

我正在尝试删除列表中的元素(如果它们已包含在文本文件中)。

例如:如果字符串 "Person123"位于文本文件中,则应从列表中删除字符串 "Person123"

以下是我当前的尝试。但是,我在迭代“MyList”时遇到问题,int 值似乎没有增加,这导致仅删除一个字符串元素,而不是两个。

我该如何解决这个问题?

当前代码:

for (Map.Entry<Person, List<String>> entry : mapOfPeopleAndDescriptions.entrySet()) {
List<String> textFileValues= readFromTextFile(filePath);
List<String> myList = entry.getValue();

for (int i = 0; i < myList.size(); i++) {

if(textFileValues.contains(myList.get(i)){

LOGGER.info("In loop- int: {}",i );
myList.remove(myList.get(i));

}

LOGGER.info("Out of loop- int: {}",i );

}

}

我得到的输出:

In loop- int: 0
Out of loop- int: 0
Out of loop- int: 1
Out of loop- int: 0
Out of loop- int: 1
Out of loop- int: 0

最佳答案

for 循环是不必要的。只需使用List.removeAll:

myList.removeAll(textFileValues);
<小时/>

请注意,如果您按索引迭代并删除元素,则应该反向执行:

for (int i = myList.size(); i >= 0; i--) {
myList.remove(i);
}

否则,您将需要更改循环中的i 值以避免跳过下一个元素。

关于java - 从列表中删除元素会导致 for 循环不增加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36862949/

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