ArrayList中对象属性值的频率

时间:2016-01-28 19:46:14

标签: java oop arraylist

这是我的清单:

List < Game > players = new ArrayList < > ();

我需要找到一种方法来计算ArrayList中有多少对象包含一个等于&#34; Dan&#34;例如。

我在for循环中尝试了这个但是没有工作:

Collections.frequency(players.get( i ).name, "Dan")

2 个答案:

答案 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