how to remove a object from linked list in java?

data-structures, java, linked-list, singly-linked-list

Solution

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();
    }
}

see http://docs.oracle.com/javase/6/docs/api/java/util/Iterator.html

Problem

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() + "\t" + data.getFprint() + "\t" + data.getFid() + "\t"); count++; } } System.out.println("The size of an linkedlist is: \t" + list.size()); System.out.println("The number of available record is :" + count); System.out.println("The size of an linkedlist is: \t" + 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()+"\t"+data.getFprint()+"\t"+data.getFid()+"\t"); list.remove(data); // problem is here count++; } } } } ```

Original source