14 Eylül 2015 Pazartesi

SummaryStatistics

Giriş
SummaryStatistics sınıfları Double, Int gibi türler için var.

average
average şöyle alınabilir, ancak bence aşağıdaki sınıflar daha iyi.
double average = list
.stream()
.filter(new Predicate<Person>(){
          public boolean test(Person p){
              return p.getGender() == Person.Sex.MALE;
           }
      })
.mapToInt(Person::getAge)
.average()
.getAsDouble();
sum
sum şöyle alınabilir, ancak bence aşağıdaki sınıflar daha iyi.
List<Double> doubles = getListOfDoubles();
double sum = doubles.stream()
                    .mapToDouble(d -> d)
                    .sum();

DoubleSummaryStatistics
Şöyle yaratırız.
List<Double> doubles = ...;
DoubleSummaryStatistics stats = doubles.stream().
  collect(Collectors.summarizingDouble(Double::doubleValue));
Daha sonra get metodları ise istatistiki bilgiler alınabilir.
System.out.println(stats.getAverage());
System.out.println(stats.getSum());