how to remove a object from linked list in java?

后端 未结 7 885
花落未央
花落未央 2020-12-15 14:08

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 doe

相关标签:
7条回答
  • 2020-12-15 14:36

    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

    0 讨论(0)
  • 2020-12-15 14:38
    for( EmpDedup data:list)
    {
       if(data.getRecord()==rec1)
       {
            list.remove(data);     
             count++;
    
        }
     }
    
    0 讨论(0)
  • 2020-12-15 14:54

    The code tries to remove element at index position 101, but there are only four items in the list.

    Use the following as a replacement of your code:

    for( EmpDedup data : list)
    {
       if( data.getRecord() == rec1 )
       {
            list.remove( data );     
             ++count;
        }
    }
    

    That's where a list object will be deleted.

    0 讨论(0)
  • 2020-12-15 14:57

    Use an Iterator instead and then use the remove() method on the Iterator

    0 讨论(0)
  • 2020-12-15 14:57

    import java.util.Scanner;

    // A complete working Java program to demonstrate deletion in singly // linked list class LinkedList { Node head; // head of list

    /* Linked list Node*/
    class Node
    {
        int data;
        Node next;
        Node(int d)
        {
            data = d;
            next = null;
        }
    }
    
    /* Given a key, deletes the first occurrence of key in linked list */
    void deleteNode(int key)
    {
        // Store head node
        Node temp = head, prev = null;
    
        // If head node itself holds the key to be deleted
        if (temp != null && temp.data == key)
        {
            head = temp.next; // Changed head
            return;
        }
    
        // Search for the key to be deleted, keep track of the
        // previous node as we need to change temp.next
        while (temp != null && temp.data != key)
        {
            prev = temp;
            temp = temp.next;
        }    
    
        // If key was not present in linked list
        if (temp == null) return;
    
        // Unlink the node from linked list
        prev.next = temp.next;
    }
    
    /* Inserts a new Node at front of the list. */
    public void push(int new_data)
    {
        Node new_node = new Node(new_data);
        new_node.next = head;
        head = new_node;
    }
    
    /* This function prints contents of linked list starting from
        the given node */
    public void printList()
    {
        Node tnode = head;
        while (tnode != null)
        {
            System.out.print(tnode.data+" ");
            tnode = tnode.next;
        }
    }
    
    /* Drier program to test above functions. Ideally this function
    should be in a separate user class. It is kept here to keep
    code compact */
    public static void main(String[] args)
    {
        LinkedList llist = new LinkedList();
    
        llist.push(7);
        llist.push(1);
        llist.push(3);
        llist.push(2);
    
        System.out.println("\nCreated Linked list is:");
        llist.printList();
    
        Scanner sc = new Scanner(System.in);
        System.out.println("please enter input");
        int aa =sc.nextInt();
        llist.deleteNode(aa); // Delete node at position 4
    
        System.out.println("\nLinked List after Deletion at position :"+aa);
    
    
        llist.printList();
    
        System.out.println("adding element to the LinkedList");
    
        System.out.println("enter element");
        int dd = sc.nextInt();
        llist.push(dd);
    
        llist.printList();
    }
    

    }

    0 讨论(0)
  • 2020-12-15 14:59

    You try to delete element with index 101, but you have only 4 items in list. How it can delete element with index 101?

    If you want to delete element that is equals to EmpDedup(101,"entry1",20) than you have to pass in remove method this object. And don't foget to redefine equals and hash code of EmpDedup.

    0 讨论(0)
提交回复
热议问题