我有一个List<Animals>
public class Animals{
int legs;
int age;
int eyes;
//getters , setters
}
我想以列表上的任意组合执行不同的操作。例如。计算平均值、计算中位数、计算两个字段的中间值等等。
在我想计算 median
的特定情况下基于 Animal legs
的中间值和Animal age
,这是怎么做到的?
我首先必须循环遍历数组列表并执行 (legs+age)/2 以获得中间值。然后,我会将这些值输入到下一个计算平均值的操作中。所以我的问题是,我在哪里存储第一个操作中执行的数据,以便将其传递给第二个操作?是否可以动态扩展 Animal 对象以包含新字段?我当时想我可以创建一个临时数组并存储结果,但这样我就会丢失有关动物的信息,并且也不会进行映射。
(我知道如何计算平均值/中位数等,只是想知道如何解决这个问题以正确解析数据)
最佳答案
您可以扩展 Animals
对于仅适用于 Animals
的方法字段来计算动物的中间值(优点:你的操作有一个有意义的名称。缺点:你的类(class)规模扩大)或创建一个(临时)Map<Animals, Double>
的Animals
到中间值,然后遍历 map 来计算平均值(优点:你的类的大小不会增长,相反:你的操作有一个有意义的名称)。
关于Java管道和过滤器模式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23866647/