lambda实现定义一个 Master 主人类 定义一个宠物类Pet 主人拥有 名字 性别 宠物 , 宠物拥有 名字类别年龄实现1.获得集合的流 2.遍历输出 全

定义一个 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 + "]";
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值