定义一个 Master 主人类 定义一个宠物类Pet 主人拥有 名字 性别 宠物 , 宠物拥有 名字 类别 年龄
* class Pet{
* name
* type
* age
* }
*
* class Master{
* String name
* int sex
* Pet pet;
* }
*
* 构造数据存入集合
* 比如:
* { 张三,男, { 旺财,狗,10 } }
* { 张三,男, { 旺财,壁虎,10 } }
* { 张三,男, { 旺财,猪,10 } }
* { 张三,男, null }
*
*
* 1.获得集合的流
*
* 2.遍历输出 全部养狗的人的信息
*
* 3.遍历集合中的前3个主人信息
*
* 4.根据 宠物的年龄对主人排序 降序
*
* 5. 遍历输出全部 主人名字信息
*
* 6. 统计 养了宠物的人的的数量
*
* 7. 累计计算 宠物年龄和
*
* 8. 过滤出 全部男性主人 并把过滤结果返回 集合接受。
*/
代码实现效果如下
Test类
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Test {
public static void main(String[] args) {
List<Master> list = new ArrayList<Master>();
list.add(new Master("张三1", "男", new Pet("来福1", "狗", 4)));
list.add(new Master("张三2", "女", new Pet("来福2", "犬", 2)));
list.add(new Master("张三3", "男", new Pet("来福3", "狗", 7)));
list.add(new Master("张三4", "女", new Pet("来福4", "狗", 12)));
list.add(new Master("张三5", "男", new Pet("来福5", "犬", 13)));
list.add(new Master("张三6", "女", new Pet("来福6", "狗", 2)));
list.add(new Master("张三7", "男", new Pet("来福7", "犬", 4)));
list.add(new Master("张三8", "女", new Pet("来福8", "犬", 4)));
list.add(new Master("张三9", "女", null));
// 1.获得集合的流
Stream<Master> stream = list.stream();
stream.forEach(System.out::println);
// 2.遍历输出 全部养狗的人的信息
System.out.println("\n遍历输出 全部养狗的人的信息 ");
list.stream().forEach(System.out::println);
// 3.遍历集合中的前3个主人信息
System.out.println("遍历集合中的前3个主人信息");
list.stream().limit(3).forEach(System.out::println);
// 4.根据宠物的年龄对主人排序 降序
System.out.println("根据宠物的年龄对主人排序 降序");
list.stream().filter((e) -> e.getPet() != null).sorted((o1, o2) -> o2.getPet().getAge() - o1.getPet().getAge())
.forEach(System.out::println);
// 5. 遍历输出全部 主人名字信息
System.out.println("遍历输出全部 主人名字信息");
list.stream().map((e) -> e.getName()).forEach(System.out::println);
// 6. 统计 养了宠物的人的的数量
System.out.println("统计 养了宠物的人的的数量");
System.out.println(list.stream().filter((e) -> e.getPet() != null).count());
// 7. 累计计算 宠物年龄和
System.out.println("累计计算 宠物年龄和");
Integer integer = list.stream().filter((e) -> e.getPet() != null).map((e) -> e.getPet().getAge())
.reduce((a, b) -> a + b).get();
System.out.println(integer);
// 8. 过滤出 全部男性主人 并把过滤结果返回 集合接受。
System.out.println(" 过滤出 全部男性主人 并把过滤结果返回 集合接受。");
List<Master> collect = list.stream().filter((e) -> e.getSex().equals("男")).collect(Collectors.toList());
collect.stream().forEach(System.out::println);
}
}
Master类
public class Master {
private String name;
private String sex;
private Pet pet;
public Master(String name, String sex, Pet pet) {
super();
this.name = name;
this.sex = sex;
this.pet = pet;
}
public Master() {
// TODO Auto-generated constructor stub
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Pet getPet() {
return pet;
}
public void setPet(Pet pet) {
this.pet = pet;
}
@Override
public String toString() {
return "Master [name=" + name + ", sex=" + sex + ", pet=" + pet + "]";
}
}
Pet类
public class Pet {
private String name;
private String type;
private int age;
public Pet(String name, String type, int age) {
super();
this.name = name;
this.type = type;
this.age = age;
}
public Pet() {
// TODO Auto-generated constructor stub
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Pet [name=" + name + ", type=" + type + ", age=" + age + "]";
}
}