当我尝试删除单个项目时,此方法工作正常,但当我使用文件删除多个项目时,出现并发修改异常。
static void delete(String dString) {
LinkedList<String> AddressBook2 = AddressBook;
for(String s : AddressBook2){
String subString = dString.toUpperCase().substring(7);
if(s.toUpperCase().contains(subString)){
AddressBook.remove(s);
System.out.println("Removal Successful: "+ s);
}
}
System.out.println("ERROR: Not found for Removal: "+dString.substring(7));
System.out.println("----------------------------");
}
最佳答案
您可以使用迭代器来安全地删除元素,例如:
String subString = dString.toUpperCase().substring(7);
boolean resultFound = false;
for (Iterator<String> iterator = addressBook2.iterator(); iterator.hasNext();) {
String s = iterator.next();
if(s.toUpperCase().contains(subString)) {
iterator.remove();
System.out.println("Removal Successful: "+ s);
resultFound = true;
}
}
if (!resultFound) {
System.out.println("ERROR: Not found for Removal: "+dString.substring(7));
}
System.out.println("----------------------------");
另外,您不需要在每次循环迭代时都获取子字符串,所以我将其从 for 语句中移出。并且您必须提供一些逻辑,以使您的消息 ERROR: Not found for Removal:
只有在没有真正找到时才会发生。我以 boolean 标志为例。
关于java - 如何遍历我的链表来搜索和删除特定的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33073019/