Java Выбрать элемент списка - PullRequest
0 голосов
/ 27 сентября 2018

Я застрял в части, когда мне нужно создать список и выбрать что-то в нем.

У меня есть исполняемый файл

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

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Во-первых, вы не должны передавать 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.Если вы хотите напечатать имя Personne в System.out.println(), вам необходимо переопределить метод toString() в Personne классе из Object класса.

    @Override
    public String toString() {
        return this.name;
    }
0 голосов
/ 27 сентября 2018

Класс 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...