我实施了地址簿和地址类!我想实现一个方法“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;
}
}
答案 0 :(得分:4)
您的方法是static
方法,这就是为什么您不能在静态上下文中使用this
,因为在静态方法的调用中没有对象实例。
public static String searchSurename // static method
您需要从方法声明中删除static
。
如果您无法进行上述更改,则必须将ArrayList adresses
设为static
。
另外,作为旁注,请使用equals()
进行字符串值比较。 ==
用于对象参考比较。
if(this.adresses.get(i).getSurename().equals(surename)) {