maak een klasse om een ​​lijst te modelleren

Ik heb een klasse met de naam Persoon . Deze klasse vertegenwoordigt (zoals de naam al zegt) een persoon. Nu moet ik een class PhoneBook maken om een ​​lijst met Person s weer te geven. Hoe kan ik dit doen? Ik begrijp niet wat betekent "maak een klas om een ​​lijst te vertegenwoordigen".

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 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();

}

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 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;

}
}
1
importeer java.util. *;/* * Deze klasse presenteert het object * lijst van persoon */openbare klasse Telefoonboek {private Person persoon; openbare telefoonlijst (persoon) {this.person = persoon; } public Person getPerson() {retourpersoon; }}
toegevoegd de auteur Mazzy, de bron
@AljoshaBre Kunt u me uitleggen wat u zegt, zonder mij de code te laten zien?
toegevoegd de auteur Mazzy, de bron
Dit betekent waarschijnlijk dat u een lijst met persoonsobjecten als een lid van het telefoonboek hebt.
toegevoegd de auteur nullpotent, de bron

3 antwoord

Uw PhoneBook -klasse heeft waarschijnlijk een lid als deze:

private List book = new ArrayList();

En methoden voor het toevoegen en ophalen van Person -objecten naar/van deze lijst:

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;
}

Houd er rekening mee dat een lijst niet de best mogelijke weergave is voor een telefoonboek, omdat u (in het ergste geval) de hele lijst moet doorlopen om een ​​nummer op te zoeken.

Er zijn veel verbeteringen/verbeteringen die u kunt aanbrengen. Dit zou u op weg moeten helpen.

2
toegevoegd
ok nu is het duidelijker. maar deze klas telefoonboek moet een constructeur hebben?
toegevoegd de auteur Mazzy, de bron
Het zou kunnen. Uw constructor kan bijvoorbeeld een bestaande lijst nemen om het boek te starten.
toegevoegd de auteur Wayne Burkett, de bron

Op basis van de klasse met de naam PhoneBook, neem ik aan dat u uiteindelijk een koppeling wilt maken tussen een telefoonnummer en een persoon. Als dit is wat u moet doen, moet uw telefoonboekklasse een kaart bevatten in plaats van een lijst (maar dit kan afhankelijk zijn van andere parameters van het project).

public class PhoneBook
{
    private Map people = new HashMap();

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

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

In het bovenstaande wordt het telefoonnummer weergegeven als een tekenreeks, wat waarschijnlijk niet ideaal is omdat hetzelfde telefoonnummer verschillende tekenreeksrepresentaties kan hebben (verschillende spaties, of streepjes, enzovoort). Idealiter zou de kaartsleutel een klasse PhoneNumber zijn die hier in zijn hashcode rekening mee houdt en gelijk is aan functies.

1
toegevoegd

je kunt het doen door een klassentelefoonboek te maken

public class PhoneBook{

Private List personList = new ArrayList;

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);
}
}
0
toegevoegd