如何在Java中获得平均值

如何在Java中获得平均值,java,average,Java,Average,如何在java中使用函数式编程获得平均值 这就是我试过的 似乎它在IntStream.of不起作用 我想从数组的特定行中获得平均值 public static void average(List<List<String>> rows){ IntStream stream = IntStream.of(e -> Integer.parseInt(e.get(2))); OptionalDouble obj = stream.averag

如何在java中使用函数式编程获得平均值

这就是我试过的

似乎它在IntStream.of不起作用 我想从数组的特定行中获得平均值

 public static void average(List<List<String>> rows){
     IntStream stream = IntStream.of(e -> Integer.parseInt(e.get(2))); 

   
    OptionalDouble obj = stream.average(); 

 
    if (obj.isPresent()) { 
        System.out.println(obj.getAsDouble()); 
    } 
    else { 
        System.out.println("-1"); 
 
    }
 }
  
行是数组,是从excel文件读取的行。

Stream.ofelem1,elem2使用声明的元素创建一个流

假设你有一个盒子,里面有100个福托

如果执行Stream.ofbox,则会得到一个盒子流,返回1个盒子

你想要的是一堆福托酒。要得到它,您需要box.stream,而不是stream.ofbox

接下来的问题是,您似乎不明白reduce的作用。您需要告诉系统如何集成两个结果,而不仅仅是如何获得结果


首先,您需要的不是减少,而是将给定的“foto”字符串列表映射为整数,这不仅需要e.get,还需要integer.parseInt,您需要的是map,而不是reduce。

什么是List?你有一个包含字符串列表的列表?不清楚你想要的平均值是多少。。。每个列表的第9个元素?如果是这样的话,你会想先映射每个列表,然后说:在进行并行时要非常小心。这个简单的呼叫会带来大量开销。您需要处理数千个对象,然后才能获得延迟。对于较小的数据集,使用并行流时会浪费CPU周期,结果会变慢。是的,我想真正的答案是:这个人不知道他们在做什么。他们应该先阅读一些关于流的好教程……实际上,他们需要mapToInt而不是map。平均值会返回一个可选的双精度,所以你可能也需要解决这个问题。是的,我的错,不知道如何解释这个问题。。。没关系,解决了。谢谢