java中链表中的迭代器和remove()

java中链表中的迭代器和remove(),java,Java,我有一个链表,其中包含的人的数据,并将其写入一个文件。我想从列表中删除一个条目,然后将新列表写入文件。 我使用了迭代器,但当我将其写入文件时,它会显示空条目 public void deleteItem(String Iname){ MailFiling objFile = new MailFiling(); MailingList obj = new MailingList(); Iterator objI = list.iterator(); while(ob

我有一个链表,其中包含的人的数据,并将其写入一个文件。我想从列表中删除一个条目,然后将新列表写入文件。 我使用了迭代器,但当我将其写入文件时,它会显示空条目

public void deleteItem(String Iname){
    MailFiling objFile = new MailFiling();
    MailingList obj = new MailingList();
    Iterator objI = list.iterator();
    while(objI.hasNext()){
        Object o = objI.next();
        if(o.toString().contains(Iname))
            list.remove(obj);
        objFile.WriteToFile2(list);
    }//end of while
}//end of method

public void WriteToFile2(LinkedList列表){
试一试{
String writeFile=新字符串();

对于(inti=0;i您应该使用迭代器的方法,而不是列表的方法

Iterator objI = list.iterator();
while(objI.hasNext()) {
    if(objI.next().toString().contains(Iname)) {
        objI.remove();
    }
}
objFile.WriteToFile2(list);
还要注意,write方法应该在循环之外调用

更新

您的打印代码也有一些问题。请尝试使用此选项

Writer writer = new BufferedWriter(new OutputStreamWriter(
      new FileOutputStream("Mailing List 2.txt"), "utf-8"));
for (int i =0; i<list.size(); i++) {
    writer.write(list.get(i).toString() + "\n");
}
writer.flush();
writer.close();
Writer Writer=new BufferedWriter(new OutputStreamWriter(
新文件输出流(“邮件列表2.txt”),“utf-8”);

对于(int i=0;i使用
iterator.remove();
而不是
list.remove(obj);

也可以使用post WriteToFile2方法。为什么要在while循环中写入文件,这真的是必需的吗?您还可以演示如何初始化并将数据添加到列表中吗?System.out.println(“输入代码:”;Scanner g=新扫描仪(System.in);p=g.next();obj.setpostalCode(p);list.add(obj);objFile.WriteToFile(obj);我在问题中添加了我的WriteToFile方法。在我做了上述更改后,我的文件中仍然有空值。你能解释一下使用迭代器的remove方法的确切原因吗?它仍然在创建这个[]在我的文件中。对后一部分进行更改,如果仍然存在问题,则快速调试器。在
objFile.WriteToFile2(list);
处放置断点,然后检查列表的内容。“utf-8”做什么?
Writer writer = new BufferedWriter(new OutputStreamWriter(
      new FileOutputStream("Mailing List 2.txt"), "utf-8"));
for (int i =0; i<list.size(); i++) {
    writer.write(list.get(i).toString() + "\n");
}
writer.flush();
writer.close();