Java Select element of list



当我必须创建一个列表并在其中选择某些内容时,我被困在一个部分。

我有一个可执行文件

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

我有我的班级

public class Personne{
private String name;
public Personne(String name){
this.name=name;
}
public String getPersonne(){
return this.name;
}
}

还有我的班级周末,我尝试选择安娜这个名字

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

WeekEnd类已经有一个listePersonne成员。你不应该传递这样的参数,它只会隐藏这个成员:

public Personne findUsingEnhancedForLoop(String name) {
// Rest of the code, as you had it...

顺便说一下,请注意,使用 Java 8 的流可以大大清理方法的实现:

return
listePersonne.stream().filter(p -> p.getPersonne().equals(name)).findFirst().orElse(null);

首先,您不应该将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 的名称,则必须从类中重写PersonnetoString()方法Object

@Override
public String toString() {
return this.name;
}

最新更新