我有一个名为Person
的类。这个类代表(如名字所示)一个人。现在我必须创建一个类PhoneBook
来表示Person
的列表。我怎样才能做到这一点?我不明白“创建一个代表列表的类”的含义。
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;
}
}
答案 0 :(得分:2)
您的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 :(得分:1)
基于名为PhoneBook的类,我假设您最终想要在电话号码和人之间创建映射。如果这是你需要做的,那么你的PhoneBook类应该包含一个Map而不是List(但这可能取决于项目的其他参数)。
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和equals函数中将所有这些都考虑在内。
答案 2 :(得分:0)
你可以通过创建一个类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);
}
}