1

我有2个类图,类地址

+forename
+surename
+street
+houseno
+code
+state
+toString

第二个通讯录

insert(address: Address)
toString()
searchSurename (surename:  string): Address[*] 
+searchForename(forename: string): Address[*]

我实现了地址:

public class Address {

    public static String forename;
    public static String surename;
    public static String street;
    public static int houseno;
    public static int code;
    public static String state;
    public String toString(){
 return this.forename + this.surename + this.street + this.houseno + this.code + this.state;
            }

我怎样才能尽可能简单地实现地址簿?

编辑:

public class addressbook{

    private static ArrayList<Address> book;


public addressbook(){
   book = new ArrayList<Address>();
}

}

编辑问题:

我是否允许在实现中添加我们在类图中使用的方法或属性之外的新方法或属性?

编辑2:

首先尝试使用 ArrayList 实现方法 searchSurename:

public static String searchSurename(String surename){
     boolean exist = false;

     if(this.addresses.isEmpty()){
         return null;
     }

     for(int i=0;i<this.addresses.size();i++) {
         if(this.addresses.get(i).getSurename() == surename) {
             exist=true;
             break;
         }

         if(exist) {
             return this.addresses.get(surename);
         } else {
             return this.addresses.get(surename);
         }
     }
 // return ?!?

}

该程序在任何一行的“this”处给我错误,也许是一个错误,但我不能说!看起来有点太难了,我没有找到任何通过列表搜索很简单的实现。

4

2 回答 2

1

你可以用这样的方式实现它。查看 arrayList 的 api 以使用其方法。

public class Adressbook {

    List<Adress> adresses = new ArrayList<Adress>();

    public Adressbook(){
        adresses = new arraylist<Adress>();
    }

    public insert (Adress adress){
        adresses.add(adress)
    }

    public searchSurename(String Surename){
    }

    public searchForename(String forename){
    }

    public String toString(){
    }

ArrayList api: http ://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html

于 2013-10-24T20:48:39.530 回答
0

要拥有唯一的地址,请使用集合收集接口

public class Adressbook {
    ....
    private Set<Adress> adresses = null;
    public Adressbook(){
        adresses = new HashSet<Adress>();
    }
    public void add(Adress adress){
        adresses.add(adress)
    }
    ...
}
于 2013-10-24T21:58:37.210 回答