go to previous page   go to home page   go to next page

Answer:

No. You are not allowed to create gaps between elements. Adding an element at index 5 in the above program would generate a runtime error.


Removing an Element

To remove an element from a list use the remove() method. This method removes an element without leaving a hole. The other object references in the list are moved to fill the gap.

E remove(int index)  //  Delete the element at index. Each element with an index 
                     //  greater than index is shifted downward to have an index 
                     //  one smaller than its previous value. 
                     //  Returns a reference to the removed element.
                     //  Throws an IndexOutOfBoundsException if the index is out
                     //  of range.

The object reference at location index is removed from the list. Elements at locations index+1, index+2, ... , size()-1 are each moved down one to fill in the gap. This is like pulling out a book from the middle of a stack of books.

Stack of Four Books, then center book removed

The object reference that was removed from the list is the return value of the method. This value can be assigned to a reference variable. As long as there is a reference to the object, the object is not lost. If the only reference to the object was the one in the list, and that reference is not assigned to a variable, then the object will be garbage collected.


QUESTION 14:

Examine the following program. What will it print?

import java.util.* ;
public class DeleteEg
{
  public static void main ( String[] args)
  {
    ArrayList<String> names = new ArrayList<String>();

    names.add( "Amy" );    
    names.add( "Bob" );
    names.add( "Chris" );  
    names.add( "Deb" );

    names.remove(2);

    for ( int j=0; j < names.size(); j++ )
      System.out.println( j + ": " + names.elementAt(j) ); 

  }
}