我正在尝试检查特定值的集合
即。我想检查一下positionType = attacker的玩家集合。只要至少有一个人参考,无关紧要。
到目前为止,每次尝试都让我失望。
有什么想法吗?
提前致谢!
答案 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;
}