当我不得不创建列表并在其中选择某些内容时,我陷入了困境。
我有一个可执行文件
public class Executable{
public static void main(String [] args){
WeekEnd we = new WeekEnd();
Personne pierre = new Personne("Pierrot");
Personne anna = new Personne("anna");
we.addPersonne(pierre);
we.addPersonne(anna);
System.out.println("test : "+we.findUsingEnhancedForLoop("anna"));
}
}
我的班级是Personne
public class Personne{
private String name;
public Personne(String name){
this.name=name;
}
public String getPersonne(){
return this.name;
}
}
在我的班级WeekEnd中,我尝试选择名字anna
import java.util.List;
import java.util.ArrayList;
public class WeekEnd{
private ArrayList<Personne> listePersonne;
public WeekEnd(){
this.listePersonne = new ArrayList<>();
}
public Personne findUsingEnhancedForLoop(
String name, ArrayList<Personne> listePersonne) {
for (Personne personne : listePersonne) {
if (personne.getPersonne().equals(name)) {
return personne;
}
}
return null;
}
public void addPersonne(Personne personne){
listePersonne.add(personne);
}
}
最佳答案
首先,您不应该在ArrayList<Personne> listePersonne
类中将Weekend
作为参数传递。取而代之的是,您只能传递String name
作为参数。
public Personne findUsingEnhancedForLoop(String name) {
for (Personne personne : listePersonne) {
if (personne.getPersonne().equals(name)) {
return personne;
}
}
return null;
}
同样,
findUsingEnhancedForLoop
方法返回一个Personne
对象。如果要在System.out.println()
中打印Personne的姓名,则必须覆盖toString()
类中Personne
类中的Object
方法。 @Override
public String toString() {
return this.name;
}