Of course. Playing with things always helps to understand them.
Here is the program, just as before, but with some added statments that might help show what is going on.
import java.util.* ;
class Entry
{
private String name;
private String number;
// constructor
Entry( String n, String num )
{
name = n; number = num;
}
// methods
public String getName()
{
return name ;
}
public String getNumber()
{
return number ;
}
public boolean equals( Object other )
{
System.out.print (" Compare " + other + " To " + this );
System.out.println(" Result: " + name.equals( ((Entry)other).name ) );
return getName().equals( ((Entry)other).getName() );
}
public String toString()
{
return "Name: " + getName() + "; Number: " + getNumber() ;
}
}
class PhoneBookTest
{
public static void main ( String[] args)
{
ArrayList<Entry> phone = new ArrayList<Entry>();
phone.add( new Entry( "Amy", "123-4567") );
phone.add( new Entry( "Bob", "123-6780") );
phone.add( new Entry( "Hal", "789-1234") );
phone.add( new Entry( "Deb", "789-4457") );
phone.add( new Entry( "Zoe", "446-0210") );
// Look for Hal in phone. The indexOf() method uses the
// equals(Object) method of each object in the list.
//
System.out.println("Begin Search" );
int spot = phone.indexOf( new Entry( "Hal", null ) ) ;
System.out.println("Begin Search" );
System.out.println( "indexOf returns: " + spot ) ;
}
}
Copy the program to a file and run it. Play with it for a while.
Could the program be altered so that it searches for a name entered by the user?
(It would be good practice for you to do this before you go on.)