Search code examples
javaarraysclassoopgetter-setter

How can I create an Address Book that can contain 100 Address Book Entries in java?


This is my class for Address Book Entry

public class AddressBookEntry {

private String firstname;
private String lastname;
private int streetno;
private String street;
private String city;
private int telephonenumber;
private String emailaddress;



public AddressBookEntry(String firstname, String lastname, int streetno,
    String street, String city, int telephonenumber, String emailaddress) {
    super();
    this.firstname = firstname;
    this.lastname = lastname;
    this.streetno = streetno;
    this.street = street;
    this.city = city;
    this.telephonenumber = telephonenumber;
    this.emailaddress = emailaddress;
}



public AddressBookEntry() {
    // TODO Auto-generated constructor stub
}

THESE ARE THE SETTER-GETTER

public String getFirstname() {
    return firstname;
}



public void setFirstname(String firstname) {
    this.firstname = firstname;
}



public String getLastname() {
    return lastname;
}



public void setLastname(String lastname) {
    this.lastname = lastname;
}



public int getStreetno() {
    return streetno;
}



public void setStreetno(int streetno) {
    this.streetno = streetno;
}



public String getStreet() {
    return street;
}



public void setStreet(String street) {
    this.street = street;
}



public String getCity() {
    return city;
}



public void setCity(String city) {
    this.city = city;
}



public int getTelephonenumber() {
    return telephonenumber;
}



public void setTelephonenumber(int telephonenumber) {
    this.telephonenumber = telephonenumber;
}



public String getEmailaddress() {
    return emailaddress;
}



public void setEmailaddress(String emailaddress) {
    this.emailaddress = emailaddress;
}

THIS IS THE CUSTOM METHODS

public String fullName() {
    return this.firstname + " " + this.lastname;
}

public String fullAddress() {
    return this.streetno + " " + this.street + " st. " + this.city + " city";
}

public void displayAddress(){
    System.out.println("Name               : " + fullName());
    System.out.println("Address            : " + fullAddress());
    System.out.println("Telephone Number   : " + this.telephonenumber);
    System.out.println("Email Address      : " + this.emailaddress + "@gmail.com"+"\n");
}
}

NOW THIS IS THE CLASS FOR THE ADDRESSBOOK

  import java.util.ArrayList;
  import java.util.List;

  public class AddressBook {

  private List<AddressBookEntry> listOfEntries;

   public AddressBook() {
    this.listOfEntries = new ArrayList<>();
}

public void add(AddressBookEntry addressBookEntry) {

    this.listOfEntries.add(addressBookEntry);
}

public void delete(int index) {
    this.listOfEntries.remove(index);
}

public AddressBookEntry get(int index) {
    return this.listOfEntries.get(index);
}

public AddressBookEntry[] viewAll() {

    AddressBookEntry[] result = new AddressBookEntry[this.listOfEntries.size()];

    this.listOfEntries.toArray(result);

    return result;
}
 }

How can I create a class address book that has a limit of 100 entries of AddressBookEntry objects using the given code above using arrays? While it includes a menu: AddEntry, DeleteEntry, ViewAllEntries, and UpdateEntry?


Solution

  • If you want fixed-sized you should use an array instead of List. If for some reason you cannot change the list, you can provide the size to the ArrayList constructor.

    public AddressBook() {
        this.listOfEntries = new ArrayList<>(100);
    }
    

    However, you need to check the size before inserting the element.

    public void add(AddressBookEntry addressBookEntry) {
        if(this.listOfEntries.size() <= 100)    
            this.listOfEntries.add(addressBookEntry);
        else
            throw new IllegalStateException("Address book is full");
    }