我正在尝试删除列表中的元素(如果它们已包含在文本文件中)。
例如:如果字符串"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
答案 0 :(得分:2)
ZeroMQ DLL
循环是不必要的。只需使用for
:
List.removeAll
请注意,如果您按索引进行迭代并删除元素,则应该反向执行:
myList.removeAll(textFileValues);
否则,您需要更改循环中for (int i = myList.size(); i >= 0; i--) {
myList.remove(i);
}
的值,以避免跳过下一个元素。
答案 1 :(得分:1)
您应该使用迭代器,然后调用remove方法:Iterator.remove()。
请参阅this thread。