找到存储在arraylist中的对象的平均值的最佳方法是什么?

gir*_*ake 1 java average arraylist

我有一个方法返回一个对象的计数,该对象的值高于一个对象中所有对象的平均值ArrayList.

'User'对象具有存储在其类(级别)中的整数值.

我的方法有效,但我想知道是否有更好的方法来查找所有对象值的平均值?

public int bestPlayers() {

    ArrayList<User> players = new ArrayList<User>();
    int bestPlayers = 0;
    int totalPlayerLevel = 0;
    double averageLevel = 0;

    for (int i = 0; i < players.size(); i++) {
        totalPlayerLevel += players.get(i).level;
    }

    averageLevel = totalPlayerLevel / players.size();

    for (int i = 0; i < players.size(); i++) {
        if (players.get(i).level > averageLevel) {
            bestPlayers++;
        }
    }

    return bestPlayers;
}
Run Code Online (Sandbox Code Playgroud)

4ca*_*tle 6

Java 8提供了一种更好的方法,使用IntStream#average():

double average = players.stream()
                        .mapToInt(p -> p.level)
                        .average()
                        .orElse(0);
Run Code Online (Sandbox Code Playgroud)

然后输出"高于平均水平"的玩家数量:

return (int) players.stream()
                    .filter(p -> p.level > average)
                    .count();
Run Code Online (Sandbox Code Playgroud)