Проверить стоимость в коллекции - PullRequest
1 голос
/ 22 марта 2011

Я пытаюсь проверить коллекцию на определенное значение

, т.е. я хочу проверить коллекцию игроков на positionType = атакующий.Неважно, как ссылается человек, если есть хотя бы один.

До сих пор каждая попытка провалилась.

Есть идеи?

Заранее спасибо!

Ответы [ 4 ]

5 голосов
/ 22 марта 2011
public Player findFirstAttacker(Collection<Player> players) {
  for (Player p : players) {
    if (p.getPositionType() == Player.POSITION_ATTACKER) {
      return p;
    }
  }

  return null;
}
3 голосов
/ 22 марта 2011

Вы пробовали метод Collection.contains () ?

Если это так, и он возвращал неправильный ответ, проверьте, что реализации equals() и hashCode() включеныкласс игрока соответствующий.Эти методы (вероятно) будут использоваться для проверки того, равно ли содержимое коллекции объекту, который вы передаете, поэтому, если они останутся реализациями по умолчанию, унаследованными от Object, вы можете не получить ожидаемого поведения.

2 голосов
/ 22 марта 2011

гуава имеет:

boolean hasAttackers = Iterables.any(list, new Predicate<Player>() {
    public boolean apply(Player player) {
        return player.getPosition().equals(PositionType.ATTACKER);
    }
});
0 голосов
/ 22 марта 2011
public Player getFirstAttacker(Collection<Player> playerCollection) {

 for (Player player : playerCollection) {
   if (player.getPosition() == Position.attacker) {
     return player;
   }
 }

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