Есть ли способ получить объект с максимальным количеством очков - PullRequest
0 голосов
/ 07 октября 2019

Если я создаю класс с именем Team и у меня есть атрибут с именем point (int), и я создаю 10 команд, у всех них есть несколько точек. Я хочу определить функцию внутри моего класса, которая будет возвращать команду с максимальным количеством очков. У вас есть какие-либо предложения? Я могу сделать это, определив внешнюю функцию, но я хочу сделать это по-другому. Могу ли я сделать это, определив статическую функцию внутри моего класса или использовать функцию stream () внутри функции моего класса?

Спасибо за помощь, и я прошу прощения за мой английский и за широкий вопрос

public class Team {
    int point;
}

Ответы [ 3 ]

0 голосов
/ 07 октября 2019

Возможно, вы могли бы создать статическую переменную карты и каждый раз, когда вызывается конструктор, добавлять объект команды в качестве ключа и указывать в качестве значения. То есть, если у команды есть очки, когда она создается. Затем создайте статическую функцию, которая проверяет карту на максимальное значение и возвращает команду. (Исправление, вы можете просто использовать ArrayList, поскольку у каждой команды уже есть поле очков)

0 голосов
/ 07 октября 2019

Просто создайте статический метод в своем классе, как этот:

public static Optional<Team> winner(Collection<Team> teams) {
    return teams.stream()
            .max(Comparator.comparingInt(team -> team.point));
}

Настройте его, если вы предпочитаете возвращать Optional, NULL или генерировать Exception, если команды Collection пусты.

0 голосов
/ 07 октября 2019

Когда я вас правильно понимаю, вы можете просто сделать цикл for.

public static void GetTeamWithMaxPoints(ArrayList<Team> teams) {
   Team team = null;
   for(Team t : teams) {
     if(team == null || team.getPoint() < t.getPoint()) {
       team = t;
     }
   }
   return team;
}

Надеюсь, это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...