создать класс для моделирования списка - PullRequest
0 голосов
/ 07 декабря 2011

У меня есть класс с именем Person. Этот класс представляет (как следует из названия) человека.Теперь мне нужно создать класс PhoneBook для представления списка Person s.Как я могу это сделать?Я не понимаю, что означает "создать класс для представления списка".

import java.util.*;

public class Person {

private String surname;
private String name;
private String title;
private String mail_addr;
private String company;
private String position;

private int homephone;       
private int officephone;      
private int cellphone;       

private Collection<OtherPhoneBook> otherphonebooklist;

public Person(String surname,String name,String title,String mail_addr,String company,String position){

    this.surname=surname;
    this.name=name;
    this.title=title;
    this.mail_addr=mail_addr;
    this.company=company;
    this.position=position;

    otherphonebooklist=new ArrayList<OtherPhoneBook>();

}

public String getSurname(){

    return surname;
}

public String getName(){

    return name;
}

public String getTitle(){

    return title;
}

public String getMailAddr(){

    return company;
}

public String getCompany(){

    return position;
}

public void setHomePhone(int hp){

    homephone=hp;
}

public void setOfficePhone(int op){

    officephone=op; 
}

public void setCellPhone(int cp){

    cellphone=cp;
}

public int getHomePhone(){

    return homephone;
}

public int getOfficePhone(){

    return officephone;
}

public int getCellPhone(){

    return cellphone;
}

public Collection<OtherPhoneBook> getOtherPhoneBook(){

    return otherphonebooklist;
}

public String toString(){

    String temp="";

    temp+="\nSurname: "+surname;
    temp+="\nName: "+name;
    temp+="\nTitle: "+title;
    temp+="\nMail Address: "+mail_addr;
    temp+="\nCompany: "+company;
    temp+="\nPosition: "+position;

    return temp;

}
}

Ответы [ 3 ]

2 голосов
/ 07 декабря 2011

В вашем PhoneBook классе, скорее всего, будет такой член:

private List<Person> book = new ArrayList<Person>();

И методы добавления и извлечения Person объектов в / из этого списка:

public void add(final Person person) {
    this.book.add(person);
}

public Person get(final Person person) {
    int ind = this.book.indexOf(person);
    return (ind != -1) ? this.book.get(ind) : null;
}

Обратите внимание, что List не самое лучшее представление для телефонной книги, потому что (в худшем случае) вам нужно пройти по всему списку для поиска номера.

Есть много улучшений / улучшений, которые вы можете сделать. Это должно начать вас.

1 голос
/ 07 декабря 2011

Исходя из того, что класс называется PhoneBook, я предполагаю, что в конечном итоге вы захотите создать сопоставление между номером телефона и человеком.Если это то, что вам нужно сделать, тогда ваш класс телефонной книги должен содержать карту вместо списка (но это может зависеть от других параметров проекта).

public class PhoneBook
{
    private Map<String,Person> people = new HashMap<String,Person>();

    public void addPerson(String phoneNumber, Person person)
    {
        people.put(phoneNumber,person);
    }

    public void getPerson(String phoneNumber)
    {
        return people.get(phoneNumber);
    }
}

В приведенном выше примере номер телефона:представляется как строка, что, вероятно, не идеально, поскольку один и тот же номер телефона может иметь разные представления строки (разное расстояние или тире и т. д.).В идеале ключ Map должен быть классом PhoneNumber, который учитывает все это в своем hashCode и равен функциям.

0 голосов
/ 07 декабря 2011

вы можете сделать это, создав класс PhoneBook

public class PhoneBook{

Private List<Person> personList = new ArrayList<Person>;

public void addPerson(Person person){
this.personList.add(person);
}

public List getPersonList(){
return this.personList;
}

public Person getPersonByIndex(int index){
return this.personList.get(index);
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...