首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

带条件的Kotlin sumBy函数

是一种用于计算集合中满足特定条件的元素的总和的函数。它可以根据条件对集合中的元素进行筛选,并将满足条件的元素的某个属性值相加得到总和。

在Kotlin中,sumBy函数接受一个Lambda表达式作为参数,该Lambda表达式定义了对集合中的每个元素进行操作的规则。在带条件的情况下,我们可以使用if语句或其他条件判断语句来过滤元素。

下面是一个示例代码,演示了如何使用带条件的sumBy函数:

代码语言:txt
复制
data class Person(val name: String, val age: Int)

fun main() {
    val people = listOf(
        Person("Alice", 25),
        Person("Bob", 30),
        Person("Charlie", 20),
        Person("David", 35)
    )

    val totalAge = people.sumBy { if (it.age > 25) it.age else 0 }
    println("Total age of people older than 25: $totalAge")
}

在上面的示例中,我们有一个包含Person对象的people列表。我们使用sumBy函数计算了年龄大于25岁的人的总年龄。Lambda表达式{ if (it.age > 25) it.age else 0 }用于筛选年龄大于25岁的人,并返回他们的年龄。最后,我们打印出了满足条件的人的总年龄。

带条件的sumBy函数在实际开发中非常有用,特别是在需要对集合中的元素进行筛选和聚合的情况下。它可以帮助我们快速计算满足特定条件的元素的总和。

腾讯云相关产品和产品介绍链接地址:

请注意,以上链接仅供参考,具体的产品选择应根据实际需求和情况进行评估。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Kotlin 中级篇(八):高阶函数详解与标准高阶函数使用

一、高阶函数介绍 在Kotlin中,高阶函数即指:将函数用作一个函数参数或者返回值函数。 1.1、将函数用作函数参数情况高阶函数 这里介绍字符串中sumBy{}高阶函数。...先看一看源码 // sumBy函数源码 public inline fun CharSequence.sumBy(selector: (Char) -> Int): Int { var sum...从上面的例子我们写法应该是这样: str.sumBy( { it.toInt } ) 复制代码 但是根据Kotlin约定,即当函数中只有一个函数作为参数,并且您使用了lambda表达式作为相应参数...:kotlin字符串:kotlin 原字符串:kotlin 反转字符串后值:kotlin字符串:kotlin 复制代码 3.7、T.takeIf()函数函数名字我们可以看出,这是一个关于条件判断函数...: 传入一个你希望一个条件,如果对象符合你条件则返回自身,反之,则返回null。

82900
  • Kotlin 使用高阶函数处理集合数据

    本文将介绍如何使用 Kotlin 高阶函数,如sumBy, reduce, fold, map,filter,forEach 等,来应对常见集合数据处理场景。...不了解高阶函数同学可以先看下之前文章。 遍历求和 sumBy 场景:输入一个账户列表List,求这些账户财产总和sum。...也就是说,sumBy场景无法用reduce代替。 那 Kotlin 有没有能指定acc类型高阶函数?有的,它叫fold。...JavaScript reduce 函数就是 Kotlin fold 函数。u1s1,Kotlin reduce 函数挺危险,还有类型限制,不建议使用。...Kotlin 官方提供了数十个高阶函数,但其实掌握了以上几个高阶函数,基本可以 cover 所有场景了。其他只是写简洁还是写复杂一点区别。而且你还有另一条路可以走:自己写一个特定高阶函数

    2.5K10

    Kotlin】空安全 ⑥ ( 先决条件函数 | checkNotNull 函数 | require 函数 | requireNotNull 函数 | error 函数 | assert 函数 )

    文章目录 一、先决条件函数 1、先决条件函数概念 2、先决条件函数原型 3、先决条件函数代码示例 一、先决条件函数 ---- 1、先决条件函数概念 在 Kotlin 中提供了一些 内置函数 , 在这些函数中可以抛出...携带自定义信息异常 , 这些函数 就是 " 先决条件函数 " ; 只有满足了 先决条件函数 先决条件 , 代码才能继续执行 , 否则就会抛异常 ; 2、先决条件函数原型 常用先决条件函数如下..., 使用给定 错误信息 抛出 IllegalStateException 异常 ; 参数非空 , 返回非空值 ; /** * 使用给定[message]抛出[IllegalStateException...failed" } } 3、先决条件函数代码示例 代码示例 : 在执行 name 字符串 count 函数之前 , 先使用 checkNotNull(name, {"变量为空"}) 先决条件函数 ,...先决条件函数 checkNotNull 原型 : /** * 如果[value]为空,则使用调用[lazyMessage]结果抛出[IllegalStateException]。

    2K10

    Kotlin函数

    这里等待后面具体来看什么时候非内联 在 Kotlin 中,我们可以只使用一个正常、非限定 return 来退出一个命名或匿名函数。...可以实现dsl风格代码全靠它 Kotlin 提供了使用指定 接收者对象 调用函数字面值功能。 可以调用该接收者对象上方法而无需任何额外限定符,可以任意调用接受者方法和属性。...如果你需要使用接收者函数类型声明一个变量,并在之后使用它,这将非常有用。 val sum = fun Int....(other: Int): Int = this + other 那么这样匿名语法需要如何使用呢? 当接收者类型可以从上下文推断时,lambda 表达式可以用作接收者函数字面值。...html { // 接收者 lambda 由此开始 body() // 调用该接收者对象一个方法 }

    2.3K40

    Kotlin函数类型 ( 函数类型 | 参数名称参数列表 | 可空函数类型 | 复杂函数类型 | 接收者函数类型 | 函数类型别名 | 函数类型实例化 | 函数调用 )

    函数类型 II . 参数名参数列表 III . 可空函数类型 IV . 复杂函数类型解读 V . 函数类型别名 VI . 接收者类型 函数类型 VII . 函数类型实例化 VIII ....函数类型自动推断 IX . 接收者函数类型 与 不带接收者函数类型 之间转换 X . 函数类型变量调用 I ....接收者类型函数类型示例 : ① 接收者类型函数类型 : String....函数类型自动推断 ---- 1 . 变量类型推断 : Kotlin变量类型可以不用显示声明 , 可以根据其赋值类型进行智能类型推断 ; 2 ....接收者函数类型 与 不带接收者函数类型 之间转换 ---- 接收者函数类型 , 可以转换为 不带接收者函数类型 , 转换规则是 , 接收者函数类型接收者 , 可以转换为不带接收者类型第一个参数

    2.7K10

    浅谈Kotlin函数

    本文简单谈下Kotlin函数,包括表达式函数体,命名参数,默认参数,顶层函数,扩展函数,局部函数,Lambda表达式,成员引用,with/apply函数等。...1.表达式函数体 通过下面这个简单例子看下函数声明相关概念,函数声明关键字是fun,嗯,比JSfunction还简单。 Kotlin中参数类型是放在变量:后面,函数返回类型也是。...,相比Java, Kotlin中可以类似于JavaScript中命名参数进行调用,而且可以不用按函数声明中顺序进行调用,可以打乱顺序,比如下面: joinToString(separator = "...5.扩展函数 扩展函数是类一个成员函数,不过定义在类外面 扩展函数不能访问私有的或者受保护成员 扩展函数也是编译成静态函数 所以可以在Java库基础上通过扩展函数进行封装,假装好像都是在调用Kotlin...,在Java中可以抽取出独立函数,但这样有时候对整体结构并不太好,Kotlin提供了局部函数来解决这个问题。

    2.6K20

    Kotlin拓展函数真身

    kotlin也写了很长一段时间了,香是真的很香这个东西。但是很多东西也是不求甚解,都是直接开始用,但是为什么我也不关心。举个栗子,就拿拓展函数来说。...返本归元 先介绍个工具,Android Studio工具栏有个tools/Kotlin/Show Kotlin ByteCode。...然后在你kotlin类上就可以直接看到kotlin类生成字节码。 先抛问题在来分析。 java能不能调用到kotlin到拓展函数? 当然可以了。下面的代码块内就是18F.dp()java写法。...也就是说我们写拓展函数其实也就是个静态方法,只是把我们拓展类当作一个静态参数传递给了静态方法内。 深入探索 上面介绍工具还是要用下,看看到底字节码上拓展函数是怎么样。...IRETURN 返回上面栈操作结果。 简单分析完字节码操作之后,得出来结论基本就是生成了一个dp静态函数,以当前拓展类作为第一个入参。

    42741

    Kotlin内联函数

    Kotlin内联函数还是挺好玩 为什么需要内联函数? lambda 表达式会被正常地编译成匿名类。这表示每调用一次 lambda表达式,一个额外类就会被创建。...内联函数使用 inline 修饰符标记,内联函数在 被使用时候编译器并不会生成函数调用代码,而是使用函数实现真实代码替换每一次函数调用 内联函数如何运作?...当一个函数被声明为 inline 时,它函数体是内联一一换句话说,函数体会被直接替换到函数被调用地方,而不是被正常调用。...因为 kotlin中在调用函数时要求参数类名必须完全一致!! 对于上面的函数,如果我们想既可以接收 Array, 也可以接收Array, 那么就可以定义一个具体化类型参数内联函数....: 内联函数在调用时候会在调用出把该函数代码直接复制一份,调用10次就会复制10次,而并非普通函数一样直接引用函数地址。

    1.6K20

    参数main函数

    为了说明参数main函数,我们首先来学习一下有关命令行概念。 命令行 在操作系统状态下,为执行某个程序而键入一行字符称为命令行。...命令行一般形式为: 命令名 参数1 参数2 参数3 ··· 参数n 参数之间以一个或多个空格隔开。...例如: C:\>copy[.exe] source.cpp c:\bak\prg.cpp 这个表示有三个字符串命令行。...copy是DOS下拷贝命令,是执行文件名,其功能就是将C盘根目录下文件source.cpp拷贝到C盘bak子目录下,并改名为prg.cpp。...参数main函数 #include int main(int a,char *b[]) { ··· } 其中a是命令行字符串个数,b是一个指针数组,数组中每一个元素指针指向命令行中个字符串首地址

    17510

    Kotlin 简单优雅高阶函数Kotlin 简单优雅高阶函数Kotlin极简教程》正式上架:1 . Kotlin 函数式编程: 函数组合。一切皆是函数。2. 简单好用 Kotlin 类型别名

    Kotlin 简单优雅高阶函数 非常感谢您亲爱读者,大家请多支持!!!有任何问题,欢迎随时与我交流~ ---- 函数代表一种关系 f 蕴涵逻辑流。...整个图G就是一幅美妙抽象逻辑之塔 映射图 。 ? image.png 1 . Kotlin 函数式编程: 函数组合。一切皆是函数。...// 简单直接函数定义 fun f(x: Int) = x % 2 !...简单优雅高阶函数定义(复合函数): compose(f, g) = f(g(*)) 组合函数返回传递给它两个函数组合: (f、g) = f (g (*))。...API filter,flat,map 等等 val mstrList = strList.filter(h) 同样逻辑,我们在 Java 8中实现代码是: package com.easy.kotlin

    97430

    Kotlin高阶函数和常用高阶函数

    在 filterTo 函数中,先对当前集合进行遍历,如果满足条件 predicate(element) 就将当前元素添加到新集合中, predicate(element) 就是我们传递进来那个函数...takeWhile:截取集合中数据,直到第一个不满足条件元素为止 例子:截取集合中不能够被5整除数,直到第一个不满足条件元素为止。...predicate(item)) 7 // 如果不满足条件结束遍历,也不会将当前不满足条件元素添加到新集合中 8 break 9 //...将满足条件元素添加到集合中 10 list.add(item) 11 } 12 // 返回新创建集合 13 return list 14} let:将调用者当做参数传递给指定函数...里this代表是自身实例,而 ()->Unit 里,this代表是外部类实例 感谢 [Kotlin中,函数作为参数,T.()->Unit 和 ()->Unit 区别][https://www.jianshu.com

    1.7K10

    说说kotlin内联函数-inline

    内联函数 定义:用关键字inline修饰函数,叫做内联函数 作用:它们函数体在编译器被嵌入每一个被调用地方,减少额外生成匿名类和执行函数开销 举个具体例子:比如下面这个kotlin代码 fun...,通过inline,消除了匿名类开销 另外,可以看kotlin官方api源码,很多都是定义成了inline函数 public inline fun Iterable.map(transform...1、普通函数,不需要使用inline,jvm会自动判断是否做内联优化,inline都是针对高阶函数 2、大量函数行数,应该避免,这样会产生过多字节码数量(每次调用地方,都会重复生产该函数字节码...Kotlin在引入inline同时,也新增了noinline关键字,我们可以把它加在不想要内联参数开头,该参数便不会具有内联效果。...总结 内联函数是一种更高效写法,很多kotlin官方方法也都采用 内联应该尽量用在轻量方法中,避免生成过多字节码 行数:206 字数:1151 主题:默认主题

    97420
    领券