在ArrayList中实现toString方法和构造函数

时间:2013-10-26 14:27:49

标签: java algorithm sorting search arraylist

我实施了地址簿和地址类!我想实现一个方法“searchForename”和“searchSurename”,其中我用“插入”之前添加了搜索元素。我查看了使用ArrayList搜索对象或元素的其他实现,但大多数情况下他们真的让我感到困惑,因为太多的代码没有任何解释。

第三次编辑新问题!:

第三次尝试:

import java.util.ArrayList;


public class Adressbook {

    private ArrayList<Adress> adresses = null;

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

    public void insert(Adress adress){
        adresses.add(new Adress("Marvin","Wildman","Blastreet",9,12345,"Blatown"));
        adresses.add(new Adress("Anne","Wildman","Woodstreet",10,6789,"Exampletown"));
        adresses.add(new Adress("William","Wildman","Eaglestreet",11,73975,"Blubvalley"));
    }


    public void searchSurename(String surename){
        for(Adress s: adresses){
            if("Green".equals(surename)){
            System.out.println(s);
            }
        }

    }

    public void searchForename(String forename){
        for(Adress s: adresses){
            if("Anne".equals(forename)){
            System.out.println(s);
            }
        }
    }

    public String toString(){
        return null;

    }

}

我几乎没有问题:

1. Adressbook中的toString方法怎么样?

2. Adress课程中的toString怎么样?

3.在Adress类中,构造函数看起来是否正确?

4.我可以更容易/更有效地实现搜索方法吗?如果不正确,我该如何更改呢?

忘了我的班级地址:

public class Adress {
    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 Adress(String forename, String surename, String street, int houseno, int code,String state){
        this.forename = forename;
        this.surename = surename;
        this.street = street;
        this.houseno = houseno;
        this.code = code;
        this.state = state;
    }



    public String toString(){
        return null;
    }

}

1 个答案:

答案 0 :(得分:4)

您的方法是static方法,这就是为什么您不能在静态上下文中使用this,因为在静态方法的调用中没有对象实例。

public static String searchSurename // static method

您需要从方法声明中删除static

如果您无法进行上述更改,则必须将ArrayList adresses设为static

另外,作为旁注,请使用equals()进行字符串值比较。 ==用于对象参考比较。

if(this.adresses.get(i).getSurename().equals(surename)) {