java - 从 ArrayList 中删除异常值
问题描述
我得到了一个带有一些不一致值的 Arraylist,我想要实现的是获取列表的平均值而不计算异常高或低的值。
IE
值:20,25,22,24,18,135,25,17,19,1000
我想要达到的结果是 20,25,22,24,18,25,17,19 的平均值。列表也可以以“异常”值开头。
我如何使用 Java 来获得所需的值?
解决方案
我假设您知道您的案例正常和异常的阈值。我假设 6 到 999 之间的值是“正常的”,而其他一切都是异常的。
使用 Java 流:
ArrayList<Integer> values = ...
double average = values.stream().mapToInt(i -> i).filter(i -> i < 1000).filter(i -> i > 5)
.average().getAsDouble();
使用 for 循环:
ArrayList<Integer> values = null;
long sum = 0;
int count = 0;
for (Integer i : values) {
if (i > 5 && i < 1000) {
sum += i;
count++;
}
}
double average = (double) sum / count;