Stream一些常用的API

public class StreamDemo {
	List<Student> list = null;
    //初始化数据
	@Before
	public void beforetest() {
		list = Arrays.asList(new Student("Tom", 18, 88, 90), new Student("Jerry", 20, 77, 89),
				new Student("Lily", 17, 98, 79), new Student("Lucy", 19, 70, 80), new Student("LiLei", 18, 88, 90),
				new Student("HanMeiMei", 21, 87, 79));
	}
 
	
	@Test
	public void streamtest() {
		// filter 过滤器返回还是一个stream流对象
		//查询math成绩大于80的学生并遍历输出
		list.stream().filter(e->e.getMath()>80).forEach(System.out::println);//.forEach(e->System.out.println(e))
		//统计数量count
		System.out.println(list.stream().count());
		//如统计总分大于160的人数
		System.out.println(list.stream().filter(e->e.getEnglish()+e.getMath()>160).count());
		//limit  取前n个值
		list.stream().limit(3).forEach(System.out::println);
		//skip 跳过前n个
		list.stream().skip(2).forEach(System.out::println);
		//distinct 去除重复数据
		list.stream().distinct().forEach(System.out::println);
		//map 映射元素可以对元素进行操作   例如对每个学生年龄加1
		list.stream().map(e->{
			e.setAge(e.getAge()+1);
			return e;
		}).forEach(System.out::println);
		//sorted 排序 
		//升序
		list.stream().sorted((a,b)->{
			return a.getEnglish().compareTo(b.getEnglish());
		});
		//降序
		list.stream().sorted((a,b)->{
			return b.getEnglish().compareTo(a.getEnglish());
		});
		//返回第一个元素  
		Optional<Student> first = list.stream().findFirst();
		System.out.println(first.get());
		//返回任意一个元素
		System.out.println(list.stream().findAny().get());
		//anyMatch 是否匹配任意一元素  检查是否包含名字为Tom的
		System.out.println(list.stream().anyMatch(e->e.getName().equals("Tom")));
		//allMatch 是否匹配所有元素
		System.out.println(list.stream().allMatch(e->e.getName().equals("Tom")));
		//noneMatch  是否未匹配所有元素
		System.out.println(list.stream().noneMatch(e->e.getName().equals("Tom")));
		//findFirst 返回元素中第一个值
		Student student = list.stream().findFirst().get();
		//findAny 返回元素中任意一个值
		Student student1 = list.stream().findAny().get();
		//max 返回最大值 查询英语成绩最高的学生
		Student student2 = list.stream().max((l1,l2)->l2.getEnglish().compareTo(l1.getEnglish())).get();
		//min 最小值  将上面l1,l2位置对调
		Student student3 = list.stream().max((l1,l2)->l2.getEnglish().compareTo(l1.getEnglish())).get();
		//将流对象转为list 
		list.stream().filter(e->e.getMath()>80).collect(Collectors.toList());
		//将流转未set
		list.stream().filter(e->e.getMath()>80).collect(Collectors.toSet());
		//对对象中的某项进行统计
		IntSummaryStatistics c = list.stream().collect(Collectors.summarizingInt(Student::getEnglish));
		System.out.println(c);//IntSummaryStatistics{count=6, sum=507, min=79, average=84.500000, max=90}
	}	
 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值