检查集合中的值

时间:2011-03-22 15:53:09

标签: java collections

我正在尝试检查特定值的集合

即。我想检查一下positionType = attacker的玩家集合。只要至少有一个人参考,无关紧要。

到目前为止,每次尝试都让我失望。

有什么想法吗?

提前致谢!

4 个答案:

答案 0 :(得分:5)

public Player findFirstAttacker(Collection<Player> players) {
  for (Player p : players) {
    if (p.getPositionType() == Player.POSITION_ATTACKER) {
      return p;
    }
  }

  return null;
}

答案 1 :(得分:3)

您是否尝试过Collection.contains()方法?

如果是,并且它返回了错误的答案,请检查播放器类的equals()hashCode()的实现是否合适。这些方法(可能)将用于检查集合内容是否与您传入的对象相同,因此如果将它们保留为继承自Object的默认实现,则可能无法获得预期的行为。

答案 2 :(得分:2)

guava有:

boolean hasAttackers = Iterables.any(list, new Predicate<Player>() {
    public boolean apply(Player player) {
        return player.getPosition().equals(PositionType.ATTACKER);
    }
});

答案 3 :(得分:0)

public Player getFirstAttacker(Collection<Player> playerCollection) {

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

 return null;
}