1、Collectors.summarizingDouble/Long/Int()的使用
SummarizingDouble()
、SummarizingLong()
和SummarizingInt()
为stream中的元素生成了统计信息,返回的结果是一个统计类,例如,
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main {
public static class Person {
int age;
Person (int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public static void main(String[] args) {
List<Person> pList = Arrays.asList(new Person(11),new Person(22), new Person(33), new Person(44), new Person(55));
List<Person> result = pList.stream()
.map(o -> {
o.setAge(18);
return o;
}).collect(Collectors.toList());
IntSummaryStatistics intResult = pList.stream()
.collect(Collectors.summarizingInt(Person::getAge));
System.out.println("stream() result :" + intResult);
LongSummaryStatistics longResult = pList.stream()
.collect(Collectors.summarizingLong(Person::getAge));
System.out.println("stream() result :" + longResult);
DoubleSummaryStatistics doubleResult = pList.stream()
.collect(Collectors.summarizingDouble(Person::getAge));
System.out.println("stream() result :" + doubleResult);
System.exit(0); //success
}
}
2、Collectors.averagingDouble/Long/Int()的使用
averagingDouble()
、averagingLong()
和averagingInt()
对stream中的元素计算平均,例如,
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main {
public static class Person {
int age;
Person (int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public static void main(String[] args) {
List<Person> pList = Arrays.asList(new Person(11),new Person(22), new Person(33), new Person(44), new Person(55));
List<Person> result = pList.stream()
.map(o -> {
o.setAge(18);
return o;
}).collect(Collectors.toList());
Double intResult = pList.stream()
.collect(Collectors.averagingInt(Person::getAge));
System.out.println("stream() result :" + intResult);
Double longResult = pList.stream()
.collect(Collectors.averagingLong(Person::getAge));
System.out.println("stream() result :" + longResult);
Double doubleResult = pList.stream()
.collect(Collectors.averagingDouble(Person::getAge));
System.out.println("stream() result :" + doubleResult);
System.exit(0); //success
}
}
3、Collectors.summingDouble/Long/Int()的使用
summingDouble()
、summingLong()
和summingInt()
对stream中的元素做sum计算,如下,
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main {
public static class Person {
int age;
Person (int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public static void main(String[] args) {
List<Person> pList = Arrays.asList(new Person(11),new Person(22), new Person(33), new Person(44), new Person(55));
List<Person> result = pList.stream()
.map(o -> {
o.setAge(18);
return o;
}).collect(Collectors.toList());
Integer intResult = pList.stream()
.collect(Collectors.summingInt(Person::getAge));
System.out.println("stream() result :" + intResult);
Long longResult = pList.stream()
.collect(Collectors.summingLong(Person::getAge));
System.out.println("stream() result :" + longResult);
Double doubleResult = pList.stream()
.collect(Collectors.summingDouble(Person::getAge));
System.out.println("stream() result :" + doubleResult);
System.exit(0); //success
}
}