【发布时间】:2016-05-15 06:46:40
【问题描述】:
我有一个方法可以返回比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;
}
【问题讨论】:
-
averageLevel = (double)totalPlayerLevel / players.size;以获得更好的精度。 -
averageLevel = (double)totalPlayerLevel / players.size();可能会更好,因为属性java.util.ArrayList.size是私有的。 -
level是public有什么原因吗? -
@MikeCAT 实际上是另一种方式。将
averageLevel更改为int,因为无论如何您都要将它与int level字段进行比较。而且由于是>,而不是>=,所以整数除法的截断是可以的。