java8 两个list合并_怎样用Java 8优雅的开发业务

怎样用Java 8优雅的开发业务

[TOC]

函数式编程

匿名函数

λ演算

流式编程

基本原理

Java中流式编程的基本原理有两点。

  1. 构建流
  2. 数据流转(流水线)
  3. 规约
IntStream.rangeClosed(1, 100) // 1. 构建流    .mapToObj(String::valueOf)// 2. 数据流转(流水线)    .collect(joining());      // 3. 规约
案例
  • 英雄的主位置一共有几类,分别是什么
@Testfun t1() {    // 英雄的主位置一共有几类,分别是什么    // 映射    val roleMains = heroes.map(Hero::getRoleMain)        // 过滤为空的数据        .filter(Objects::nonNull)        // 去重        .distinct()    println(roleMains.size)    println(roleMains)}
@Testpublic void t1() {    // 英雄的主位置一共有几类,分别是什么    List roleMains = heroes.stream()            // 映射            .map(Hero::getRoleMain)            // 过滤为空的数据            .filter(Objects::nonNull)            // 去重            .distinct()            // 收集列表            .collect(toList());    System.out.println(roleMains.size());    System.out.println(roleMains);}

  • 英雄按主次位置分组后,输出每个分组有多少英雄,其中:近战英雄有多少位,远程英雄有多少位
@Testfun t2() {    // 英雄按主次位置分组后,输出每个分组有多少英雄,其中:近战英雄有多少位,远程英雄有多少位    // 主次位置分组的英雄数量    val groupHeroCount = heroes.groupingBy {        Pair.of(it.roleMain, it.roleAssist)    }.eachCount()    // 主次分组后,再按攻击范围分组的英雄数量    val groupThenGroupCount = heroes.groupBy {        Pair.of(it.roleMain, it.roleAssist)    }.map {        val value = it.value.groupingBy(Hero::getAttackRange).eachCount()        Pair.of(it.key, value)    }.associateBy({ it.left }, { it.value })    // 遍历输出    groupThenGroupCount.forEach { (groupKey, groupValue) ->        val groupingCount = groupHeroCount[groupKey]        print("英雄分组key为:$groupKey;英雄数量:$groupingCount;")        groupValue.forEach { (countKey, countValue) ->            print("英雄攻击范围:$countKey;英雄数量:$countValue;")        }        println()    }}
@Testpublic void t2() {    // 英雄按主次位置分组后,输出每个分组有多少英雄,其中:近战英雄有多少位,远程英雄有多少位    // 主次位置分组的英雄数量    Map, Long> groupHeroCount = heroes.stream()            .collect(groupingBy(hero -> Pair.of(hero.getRoleMain(), hero.getRoleAssist()), counting()));    // 主次分组后,再按攻击范围分组的英雄数量    Map, Map> groupThenGroupCount = heroes.stream()            .collect(groupingBy(hero -> Pair.of(hero.getRoleMain(), hero.getRoleAssist()),                    groupingBy(Hero::getAttackR
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值