Kotlin 控制流和集合过滤操作符

2024-05-08 22:18

本文主要是介绍Kotlin 控制流和集合过滤操作符,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

一、if else

在 Kotlin 中, if 是一个表达式,即它会返回一个值。 因此就不需要三元运算符(条件 ? 然
后 : 否则),因为普通的 if 就能胜任这个角色。

eg. 有一个int值是a,一个int值是b,求他们的比较大的那个数

java

int a = 1, b = 3;
Log.e("a和b的最大值是", a > b ? a + "" : b + "");

kotlin

val a:Int=1val b:Int=3val max = if (a > b) a else bprint("a和b里面最大的是"+max)

二、When 表达式

when 将它的参数和所有的分支条件顺序比较,直到某个分支满足条件。 when 既可以被当
做表达式使用也可以被当做语句使用。如果它被当做表达式, 符合条件的分支的值就是整个
表达式的值,如果当做语句使用, 则忽略个别分支的值。(像 if 一样,每一个分支可以是
一个代码块,它的值是块中最后的表达式的值。)
如果其他分支都不满足条件将会求值 else 分支。 如果 when 作为一个表达式使用,则必须
有 else 分支, 除非编译器能够检测出所有的可能情况都已经覆盖了。

eg. 实例demo里面的适配器代码:

when (dataItem.type) {"Android" -> holder?.ivType?.setImageResource(R.mipmap.android_icon)"iOS" -> holder?.ivType?.setImageResource(R.mipmap.ios_icon)"前端" -> holder?.ivType?.setImageResource(R.mipmap.js_icon)"拓展资源" -> holder?.ivType?.setImageResource(R.mipmap.other_icon)else -> holder?.ivType?.setImageResource(R.mipmap.android_icon)}

三、For 循环

for 循环可以对任何提供迭代器(iterator)的对象进行遍历,语法如下:

for (item in collection) print(item)

四、kotlin集合过滤操作符

过滤操作符:

  • drop():从第一项开始去除前n个元素,并返回剩余的元素列表。
  • dropWhile{}:根据给定函数从第一项开始去掉指定元素,直到不满足条件为止的前面的元素,并返回剩余元素列表。
  • dropLastWhile{}:根据给定函数从最后一项开始去掉指定元素,直到不满足条件为止的后面的元素,并返回剩余元素的列表。
  • filter{}:过滤出所有符合给定函数条件的元素。
  • filterNot{}:过滤所有不符合给定函数条件的元素。
  • filterNotNull():过滤所有元素中不是null的元素。
  • slice():过滤一个list中指定index的元素。
  • take():返回从第一个开始的n个元素。
  • takeLast():返回从最后一个开始的n个元素。
  • takeWhile{}:返回从第一个开始符合给定函数条件的元素,直到不符合条件为止。
  • takeLastWhile{}:返回从最后一个开始符合给定函数条件的元素,直到不符合条件为止。

这篇关于Kotlin 控制流和集合过滤操作符的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/971594

相关文章

对于集合中的自定义对象使用collections.sort 进行排序,需要实现compartor接口

/**  * 榜单 业务类  *  * @author seawind  *  */ public class RankService {     // 查看榜单     public List<Orderitem> showRank() {         RankDAO rankDAO = new RankDAO();         List<O

面试题大集合

仅供参考 1、用String的方法将数据类型转换为String。 2、有一个不定长度的String,其中前面是字母,后边是数字,例如:”abcd123.456″, 要求写一个方法得到其中的数字以String的形式返回,数字保留小数点后两位,不四舍五入,截去多余小 数,例如:”abcd123.456″,得到”123.45″ 如果数字没有小数点,要得到两位为0的小数,例如:”abcd123″,得

java入门详细教程之集合的理解与应用

一、Collenction集合 数组和集合的区别 长度 数组的长度是不可变的,集合的长度是可变的 数据类型 数组可以存基本数据类型和引用数据类型 集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类 Collection 集合概述和使用 Collection集合概述​: 是单例集合的顶层接口,表示一组对象,这些对象也称为Collection的元素 JDK不提供此

java并发实战第六章(2)非阻塞式线程安全列表与一般List集合多线程情况下的比较

这里我把ConcurrentLinkedDeque与List进行对比测试了一下,发现在多线程情况下一般的集合会出现很大的并发性问题,下面就一起探索一下 1.使用ConcurrentLinkedDeque实现的多线程读写数据 任务:添加大量的数据到一个列表集合中 从同一个列表中移除大量的数据 /*** * @author fcs* @date 2015-6-21* 描述:向集合中添加元素,添

java并发编程实战第六章(1)并发集合介绍

1.java中提供了两类适用于并发应用的集合。 1.阻塞式集合(Blocking Collection):这类集合包括添加移除数据的方法。当集合已经满或者为空的时候,被调用的添加或者移除方法就不能立即 被执行,那么调用这个方法的线程将被阻塞,直到该方法可以被成功执行。 2.非阻塞式集合(Non-Blocking Collection):这类集合也包括添加和移除数据的方法,如果方法不能被立即

JavaSE——集合框架一(3/7)-List系列集合:特点、方法、遍历方式、ArrayList集合的底层原理

目录 List集合 特点、特有方法 实例演示 List集合支持的遍历方式 ArrayList集合的底层原理 List集合 我们要了解List集合三点: 有什么特点?是否有特有功能?适合什么业务场景? 特点、特有方法 List系列集合特点:有序、可重复、有索引 ArrayList:有序,可重复,有索引LinkedList:有序,可重复,有索引 它们的底层实现不同,

多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合

● 环境框架:python 3.9  pytorch 1.8 及其以上版本均可运行 ● 使用对象:论文需求、毕业设计需求者 ● 代码保证:代码注释详细、即拿即可跑通。  往期精彩内容: 时序预测:LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较-CSDN博客 风速预测(一)数据集介绍和预处理-CSDN博客 风速预测(二)基于Pytorch的EMD-LST

我碰到的Java实习面试题集合

面试公司:今日头条,阿里巴巴,远景能源,腾讯,天数,上海星环科技。 一、Java基础 ArrayList和LinkedList的区别?(链表和数组的优缺点) 答:ArrayList是一个动态的数组结构,而LinkedList是双向链表结构;存取数据的时候,ArrayList更适合按位随机存取,而LinkedList更适合顺序读存取;插入/删除数据时,ArrayList的开销就比Linked

扩展 easyui 控件系列:为datagrid 增加过滤行

此功能还为真正完成,起到抛砖引玉的效果,发动大家的力量把这个功能完善起来,效果图如下:   基本上就是扩展了 datagrid.view 中的onAfterRender 这个事件,具体代码如下: $.extend($.fn.datagrid.defaults.view,{onAfterRender:function(target){var dc = $.data(targ