如何从java中的链表中删除对象? [英] how to remove a object from linked list in java?
本文介绍了如何从java中的链表中删除对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的代码有一个问题,我做了一个示例程序来显示链接列表中的 emp 详细信息,现在当我尝试删除特定条目时出现问题意味着它不起作用,我希望我做错了在我的代码中你能建议怎么做吗?
i have one problem with my code ,i did a sample program to display the emp details from a linked list,now the problem when i trying to delete a particular entry means it doesn't work,i hope i did some mistake in my code could you suggest how to do that?
import java.util.*;
class EmpDedup {
int record;
String fprint;
int fid;
EmpDedup(int record, String fprint, int fid) {
this.record = record;
this.fprint = fprint;
this.fid = fid;
}
public int getRecord() {
return record;
}
public String getFprint() {
return fprint;
}
public int getFid() {
return fid;
}
public static void main(String[] args) {
int count = 0;
LinkedList<EmpDedup> list = new LinkedList<EmpDedup>();
list.add(new EmpDedup(101, "entry1", 20));
list.add(new EmpDedup(102, "entry2", 30));
list.add(new EmpDedup(103, "entry3", 40));
list.add(new EmpDedup(104, "entry4", 50));
Scanner input = new Scanner(System.in);
System.out.print("Enter record no to display: ");
int rec = input.nextInt();
for (EmpDedup data : list) {
if (data.getRecord() == rec) {
System.out.println(data.getRecord() + " " + data.getFprint() + " " + data.getFid() + " ");
count++;
}
}
System.out.println("The size of an linkedlist is: " + list.size());
System.out.println("The number of available record is :" + count);
System.out.println("The size of an linkedlist is: " + list.size());
Scanner input1 = new Scanner(System.in);
System.out.print("Enter record no to delete: ");// here i try to delete a particular record
int rec1 = input1.nextInt();
for (EmpDedup data : list) {
if (data.getRecord() == rec1) {
// System.out.println(data.getRecord()+" "+data.getFprint()+" "+data.getFid()+" ");
list.remove(data); // problem is here
count++;
}
}
}
}
推荐答案
当您对列表进行迭代时,您无法对其进行操作(添加、删除...项目).你必须使用迭代器
you cannot operate in lists (add, remove... items) while you iterate on them. You have to use an Iterator
for(Iterator<EmpDedup> iter = list.iterator(); iter.hasNext();) {
EmpDedup data = iter.next();
if (data.getRecord() == rec1) {
iter.remove();
}
}
参见 http://docs.oracle.com/javase/6/docs/api/java/util/Iterator.html
这篇关于如何从java中的链表中删除对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文