当我不得不创建列表并在其中选择某些内容时,我陷入了困境。

我有一个可执行文件

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

10-06 03:35