DoubleStream接口
一、DoubleStream接口表示元素类型是double的数据源。
二、DoubleStream接口的常用方法:
1. stream.max().getAsDouble():获取流中数据集的最大值。
2. stream.min.getAsDouble():获取流中数据集的最小值。
3. stream.average():获取流中数据集的平均值。
案例演示
创建Person类:
public class Person {
public static enum Sex{
MALE,FEMALE;
}
private String name;
private Sex gender;
private int age;
private double height;
public Person() {
}
public Person(String name, Sex gender, int age, double height) {
super();
this.name = name;
this.gender = gender;
this.age = age;
this.height = height;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Sex getGender() {
return gender;
}
public void setGender(Sex gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
@Override
public String toString() {
return "Person [name=" + name + ", gender=" + gender + ", age=" + age + ", height=" + height + "]";
}
}
创建测试类在测试类中,创建一个初始化含有Person对象集合的静态方法:
public class Test05_collection_doubleStream {
//创建一个用于初始化集合的静态方法
public static List<Person> createPerson(){
List<Person> people = new ArrayList<Person>();
Person person = new Person("张飞",Person.Sex.MALE,33,1.99);
people.add(person);
person = new Person("王菲",Person.Sex.FEMALE,33,1.65);
people.add(person);
person = new Person("刘亦菲",Person.Sex.FEMALE,33,1.68);
people.add(person);
person = new Person("李四",Person.Sex.MALE,33,1.76);
people.add(person);
person = new Person("小马",Person.Sex.MALE,33,1.71);
people.add(person);
person = new Person("郭靖",Person.Sex.MALE,33,1.88);
people.add(person);
return people;
}
}
再从该测试类中添加main方法,在main方法中进行测试:
public static void main(String[] args) {
//初始化一个含有若干个Person对象的集合
List<Person> people = createPerson();
/**
* 【案例1】 输出集合中所有Person对象中身高最小的值。
*/
//创建一个Stream对象,用来 输出集合中所有Person对象中身高最小的值。
Stream<Person> stream = people.stream();
DoubleStream doubleStream = stream.mapToDouble(p -> p.getHeight());
double minHeight = doubleStream.min().getAsDouble();
System.out.println(minHeight);// 1.65
/**
* 【案例2】 输出集合中所有Person对象中身高最大的值。
*/
//创建一个Stream对象,用来输出集合中所有Person对象中身高最大的值。
Stream<Person> stream2 = people.stream();
DoubleStream doubleStream2 = stream2.mapToDouble(p -> p.getHeight());
double maxHeight = doubleStream2.max().getAsDouble();
System.out.println(maxHeight);// 1.99
/**
* 【案例3】 输出集合中所有Person对象中名字中带有"菲"字的平均身高值
*/
//创建一个Stream对象,用来输出集合中所有Person对象中名字中带有"菲"字的平均身高
Stream<Person> stream3 = people.stream();
DoubleStream doubleStream3 = stream3.filter(p -> p.getName().indexOf("菲")>-1)
.mapToDouble(p -> p.getHeight());
double avgHeight = doubleStream3.average().getAsDouble();
System.out.println(avgHeight);// 1.665
}
测试类完整代码如下:
public class Test05_collection_doubleStream {
public static void main(String[] args) {
//初始化一个含有若干个Person对象的集合
List<Person> people = createPerson();
/**
* 【案例1】 输出集合中所有Person对象中身高最小的值。
*/
//创建一个Stream对象,用来 输出集合中所有Person对象中身高最小的值。
Stream<Person> stream = people.stream();
DoubleStream doubleStream = stream.mapToDouble(p -> p.getHeight());
double minHeight = doubleStream.min().getAsDouble();
System.out.println(minHeight);// 1.65
/**
* 【案例2】 输出集合中所有Person对象中身高最大的值。
*/
//创建一个Stream对象,用来输出集合中所有Person对象中身高最大的值。
Stream<Person> stream2 = people.stream();
DoubleStream doubleStream2 = stream2.mapToDouble(p -> p.getHeight());
double maxHeight = doubleStream2.max().getAsDouble();
System.out.println(maxHeight);// 1.99
/**
* 【案例3】 输出集合中所有Person对象中名字中带有"菲"字的平均身高值
*/
//创建一个Stream对象,用来输出集合中所有Person对象中名字中带有"菲"字的平均身高
Stream<Person> stream3 = people.stream();
DoubleStream doubleStream3 = stream3.filter(p -> p.getName().indexOf("菲")>-1)
.mapToDouble(p -> p.getHeight());
double avgHeight = doubleStream3.average().getAsDouble();
System.out.println(avgHeight);// 1.665
}
//创建一个用于初始化集合的静态方法
public static List<Person> createPerson(){
List<Person> people = new ArrayList<Person>();
Person person = new Person("张飞",Person.Sex.MALE,33,1.99);
people.add(person);
person = new Person("王菲",Person.Sex.FEMALE,33,1.65);
people.add(person);
person = new Person("刘亦菲",Person.Sex.FEMALE,33,1.68);
people.add(person);
person = new Person("李四",Person.Sex.MALE,33,1.76);
people.add(person);
person = new Person("小马",Person.Sex.MALE,33,1.71);
people.add(person);
person = new Person("郭靖",Person.Sex.MALE,33,1.88);
people.add(person);
return people;
}
}
运行main方法,输出结果如下:
1.65
1.99
1.665
本文代码资源请戳: