这是我的清单:
List < Game > players = new ArrayList < > ();
我需要找到一种方法来计算ArrayList中有多少对象包含一个等于&#34; Dan&#34;例如。
我在for循环中尝试了这个但是没有工作:
Collections.frequency(players.get( i ).name, "Dan")
答案 0 :(得分:3)
Java 8解决方案:
int count = players.stream()
.filter(p -> p.name.equals("Dan"))
.count();
Java 7解决方案:
int count = 0;
for (Game player : players) {
if (player.name.equals("Dan")) {
count++;
}
}
答案 1 :(得分:0)
您不应该这样做,但如果您真的想使用Collections.frequency
,则需要在equals
课程中实施Game
方法:
@Override
public boolean equals(Object o)
{
if(o == null || !(o instanceof Player)) return false;
Player p = (Player) o;
return name.equals(p.getName());
}
然后你可以用:
来调用它Game dan = new Game("dan");
Collections.frequency(players, dan);
(也许你的游戏类应命名为Player
)