java流处理_Java 流处理

这篇博客展示了如何使用Java8的流API处理集合数据,包括过滤、排序、分组和聚合操作。通过示例代码,解释了如何找出特定年份的交易、按城市分组交易员、统计交易员数量、查找特定城市交易员及其交易额、字符串连接以及判断特定城市是否有交易员等实际场景的应用。
摘要由CSDN通过智能技术生成

public static voidmain(String[] args) {

Trader raoul= new Trader("raoul", "Cambridge");

Trader mario= new Trader("mario", "Milan");

Trader alan= new Trader("alan", "Cambridge");

Trader brian= new Trader("brian", "Cambridge");//交易记录

List transactions =Arrays.asList(new Transaction(brian, 2011, 300),new Transaction(raoul, 2012, 1000),new Transaction(raoul, 2011, 400),new Transaction(mario, 2012, 710),new Transaction(mario, 2012, 700),new Transaction(alan, 2012, 950));//找出2011年发生的所有交易,并按金额从低到高排序//先过滤出时间不是2011的

Stream transactionStream = transactions.stream().filter((t) -> t.getYear() == 2011);//从低到高价格排序 最后把流转换成集合

List collect =transactionStream.sorted(Comparator.comparing(Transaction::getValue)).collect(Collectors.toList());//将集合转换成流来进行分组 会得到一个map集合。

Map collect2 =transactions.stream().collect(Collectors.groupingBy(Transaction::getYear, Collectors.counting()));//查看交易员在哪些城市//先从集合中映射出交易员 再映射出城市名 再去重 再转成集合

List collect3 =transactions.stream().map(Transaction::getTrader).map(Trader::getCity).distinct().collect(Collectors.toList());

collect.forEach(System.out::println);//查找出所有来自剑桥的员工 并按姓名排序//先映射出交易员 再映射出城市名 再过滤 再排序 再转换

List collect4 = transactions.stream().map(Transaction::getTrader).filter((t) -> t.getCity().equals("Cambridge")).distinct().sorted(Comparator.comparing(Trader::getName)).collect(Collectors.toList());//返回所有交易员的姓名字符串 并按姓名排序//a一开始变量为 "" 使用一个字符串相加 最后结果一定是字符串。//一个集合里求和的常用逻辑为 ""为list[0] list[0]+list[1]+list[2]+....list[n-1]

String reduce = transactions.stream().map((t) -> t.getTrader().getName()).sorted().reduce("", (a, b) -> a +b);

System.out.println(reduce);//有没有交易员在米兰工作过//先映射出交易员 再匹配有没有城市是milan

boolean milan = transactions.stream().map(Transaction::getTrader).anyMatch(t -> t.getCity().equals("Milan"));

System.out.println("有没有员工在米兰工作过:" +milan);//打印所有在剑桥的交易员的所有交易额 2650//先过滤掉城市不是剑桥的 然后映射出Value 最后取和

transactions.stream().filter(t->t.getTrader().getCity().equals("Cambridge")).map(Transaction::getValue).reduce(0,(a,b)->a+b);//所有得交易额中 最高的交易额//先对交易额进行排序(reversed()降序) 然后映射出交易额 取第一个

List collect1 = transactions.stream().sorted(Comparator.comparing(Transaction::getValue).reversed()).map(Transaction::getValue).limit(1).collect(Collectors.toList());//升级

transactions.stream().map(Transaction::getValue).reduce(Integer::max);//升级

transactions.stream().max(Comparator.comparing(Transaction::getValue));//找到最小的交易额

transactions.stream().map(Transaction::getValue).reduce(Integer::min);//升级

transactions.stream().min(Comparator.comparing(Transaction::getValue));

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值