Сравнить два объекта с несколькими полями -ArrayList - Java

Я сомневаюсь, что страховка - это легко, но я этого не вижу. У меня есть ArrayList , который спасает некоторых баскетболистов. Каждый игрок при его создании имеет следующие поля, чтобы сделать вопрос более наглядным:

team1.addPlayer(new Player("Roberto","Dueñas Hernández", "Dueñas", LocalDate.parse("01/11/1975", DateTimeFormatter.ofPattern("dd/MM/yyyy")), Country.ES, 35,400,3,team1,2,219,127,84,Position.C));

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

    public void removePlayer(Player player) throws TeamException{
    List <Player> squad = getSquad();
    boolean removed = false;

    if(squad!=null && player!=null) {
        for(int i = 0; i<squad.size() && !removed; i++) {
            if(squad.get(i)==player) {                  
                squad.remove(i); //Quitamos al jugador del equipo
                player.setTeam(null); //Al jugador le quitamos el equipo
                removed = true;
            }
        }
    }

    if(!removed) throw new TeamException("[ERROR] The player you want to remove does not exist in your team!!");
}

Я хотел бы знать, как я должен сделать сравнение между элементами, которые я сохранил в моем ArrayList , и элементом, который я добавил параметром в предыдущем коде. Код, из которого я вызываю метод removePlayer , будет выглядеть следующим образом:

team1.removePlayer(new Player("Roberto","Dueñas Hernández","Dueñas", LocalDate.parse("01/11/1975",DateTimeFormatter.ofPattern("dd/MM/yyyy")),Country.ES,35,400,3,team1,2,219,127,84,Position.C));

Как их удалить? Как я могу сделать сравнение?

PD: используйте ArrayList , а не LinkedList , так как в программе вряд ли будут какие-либо вставки / удаления, а запросы будут постоянно использоваться (получить) .

Заранее благодарю и приветствую!

1
задан 29.11.2019, 01:35
2 ответа

Если у тебя есть объект Player, который считает свойством имя, он может использовать это свойство, чтобы реализовывать ее comparaciГіn, например у тебя должен быть один getter(), который получал бы имя игрока в объекте, и, таким образом, если они равны, реализовав ее comparaciГіn имен посредством equals(), ты удалил бы объект списка.

 //if(squad.get(i)==player) {     
  if(squad.get(i).getNombre().equals(player.getNombre())) {   
      squad.remove(i); //Quitamos al jugador del equipo
      player.setTeam(null); //Al jugador le quitamos el equipo
      removed = true;
  }  
1
ответ дан 01.12.2019, 10:39

Если у него есть класс Player, что он может делать, состоит в том, чтобы осуществлять их mГ©todos hashCode() и equals(), и в методе equals() измени поля, которые он хочет сравнить, и которые в Ваш критерий способствуют тому, чтобы игрок был Гєnico. Если он работает с затмением на классе, Player дает click право выбирает ее opciГіn Source --> Generate hashCode() and equals(), открывается окно и выбирает поля, из-за которых он хочет определить, когда игрок равен другому, затмение создает cГіdigo. Сейчас она implementaciГіn был бы чем-то asГ-:

public Boolean removePlayer(Player player){
  return this.squad.remove(player);
}

возвратит true, если jugardo существует, и он переместился Гі false, если нет.

Разместил this понимая, что это признак какого-то класса Team.

1
ответ дан 01.12.2019, 10:39