java - 如何遍历我的链表来搜索和删除特定的字符串?

标签 java sorting linked-list

当我尝试删除单个项目时,此方法工作正常,但当我使用文件删除多个项目时,出现并发修改异常。

    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/

相关文章:

java - 在java中交错两个节点列表

java - vlcj视频不显示,但可以听到视频声音

javascript - jQuery 按特定属性对数据进行排序

c89 - 在链表中搜索节点返回 0x1 指针

python - Pandas.sort_index 不按第二个给定参数排序

javascript - 按降序按两个值对数组中的对象进行排序

c++ - 删除完整链表时的段错误

java - try/catch block 捕获异常后如何继续执行代码?

java - 我如何类似于在多个网站上看到的典型 "confirmation of account"过程?

Java Graphics2d : how to rotate a dodecagon smoothly using int values