我有一个方法可返回计数值大于对象中所有对象的平均值的对象的计数ArrayList
。
“用户”对象具有存储在其类(级别)中的整数值。
我的方法有效,但我想知道是否有更好的方法来查找所有对象值的平均值?
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;
}
Java 8使用IntStream#average()
以下方法提供了一种更好的方法:
double average = players.stream()
.mapToInt(p -> p.level)
.average()
.orElse(0);
然后输出“高于平均水平”的玩家数量:
return (int) players.stream()
.filter(p -> p.level > average)
.count();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句