I created a ContactsList
class in Java that holds Person
objects. I consider this is a side project for my GitHub profile. Any kind of suggestion is appreciated.
Person
Class
package contactsList; public class Person { private static final String FAVOURITE = "★"; private String firstName; private String lastName; private String fullName; private String phone; private String dob = ""; private String email = ""; private String favourite = ""; public Person(String firstName, String lastName, String phone) { setFirstName(firstName); setLastName(lastName); setFullName(this.getFirstName().concat(" ").concat(this.getLastName())); setPhone(phone); } public Person(String firstName, String lastName, String phone, String dob, String email) { this(firstName, lastName, phone, dob, email, false); } public Person(String firstName, String lastName, String phone, String dob, String email, boolean favourite) { this(firstName, lastName, phone); this.setDob(dob); this.setEmail(email); this.setFavourite(favourite); } public boolean getFavourite() { if(this.favourite.equals(FAVOURITE)) return true; else return false; } public void setFavourite(boolean favourite) { if(favourite) this.favourite = FAVOURITE; } public String getFullName() { return fullName; } public void setFullName(String fullName) { this.fullName = fullName; } 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 String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getDob() { return dob; } public void setDob(String dob) { this.dob = dob; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Override public String toString() { return "Person{" + "firstName='" + firstName + '\'' + ", lastName='" + lastName + '\'' + ", phone='" + phone + '\'' + ", dob='" + dob + '\'' + ", email='" + email + '\'' + ", favourite='" + favourite + '\'' + '}'; } }
ContactsList
Class
package contactsList; import java.util.List; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import static java.lang.System.out; public class ContactsList implements Iterable<Person> { private List<Person> personList = new ArrayList <>(); private Person person; public ContactsList() {} public ContactsList(Person person) { this(person, false); } public ContactsList(Person person, boolean favourite) { this.person = person; this.person.setFavourite(favourite); personList.add(this.person); } public void addContacts(Person person) { personList.add(person); } public void addContacts(String firstName, String lastName, String phone) { this.addContacts(firstName, lastName, phone, "", "", false); } public void addContacts(String firstName, String lastName, String phone, String dob, String email) { this.addContacts(firstName, lastName, phone, dob, email, false); } public void addContacts(String firstName, String lastName, String phone, String dob, String email, boolean favourite) { this.person = new Person(firstName, lastName, phone, dob, email, favourite); this.personList.add(this.person); } public int getTotalContacts() { return personList.size(); } public boolean exists(Person person) { if(personList.contains(person)) return true; else return false; } public boolean exists(String fullName) { for(Person person : personList) { if(person.getFullName().equals(fullName)) return true; } return false; } public void removeContacts(Person person) { if(personList.remove(person)) return; } public void removeContacts(String fullName) { int index = -1; for(Person person : personList) { if(person.getFullName().equals(fullName)) index = personList.indexOf(person); } if(index >= 0) personList.remove(index); } public void displayFavouriteContacts() { for(Person person : personList) { if(person.getFavourite()) out.println(person); } } public void sortBy(String by) { final String f = "f"; final String l = "l"; if(by.equalsIgnoreCase(f)) Collections.sort(personList, Comparator.comparing(Person::getFirstName)); else if(by.equalsIgnoreCase(l)) Collections.sort(personList, Comparator.comparing(Person::getLastName)); else Collections.sort(personList, Comparator.comparing(Person::getFullName)); } public List<String> getPhoneNumber(String fullName) { List<String> phoneList = new ArrayList <>(); for(Person person : personList) { if(person.getFullName().equals(fullName)) phoneList.add(person.getPhone()); } return phoneList; } public List<String> getPhoneByFirstName(String firstName) { List<String> phoneList = new ArrayList <>(); for(Person person : personList) { if(person.getFirstName().equals(firstName)) phoneList.add(person.getPhone()); } return phoneList; } public List<String> getPhoneByLastName(String lastName) { List<String> phoneList = new ArrayList <>(); for(Person person : personList) { if(person.getLastName().equals(lastName)) phoneList.add(person.getPhone()); } return phoneList; } public List<Person> getAllContacts() { List<Person> tempList = new ArrayList <>(); for(Person person : personList) tempList.add(person); return tempList; } @Override public String toString() { String longString = ""; for(Person person : personList) longString = longString.concat(person.toString().concat("\n")); return longString; } @Override public Iterator iterator() { return new ContactsListIterator(); } private class ContactsListIterator implements Iterator<Person> { int counter = 0; @Override public boolean hasNext() { return (counter < personList.size()); } @Override public Person next() { return personList.get(counter++); } } }
Person
class, your favorite variable is a String, but you are using it as a boolean everywhere else.\$\endgroup\$