好用的集合扩展方法:

下面来看一下对于集合中好用的一些扩展方法,直接上代码:

如果我们想取出集合中的第一个值和最后一个值,用Java方式是get(0)和get(size-1),但是在Kotlin中提供有现成的方法,如下:

其中看一下它的定义,就是标准的扩展方法的定义:

另外如果想过滤元素在之前也已经用过了,用filter,比如如果想取出偶数的元数,如下:

简单看一下它的定义:

下面再来定义一个集合:

看一下它的定义:

运行一下:

接着继续:

看下它的定义:

也就是如果第一个元素或是最后一个元素为null,则会返回null,比较简单。

接下来再来看一下Map:

另外还可以用它来构造HashMap,如下:

Range:

关于范围其实在之前已经使用过了,这里再集中的演示一下:

注意一个细节,在Kotlin中的a不需要加类型,因为它可以推断出来:

接下来如果想降序的输出呢?很简单嘛:

啥输出都木有,为啥呢?其实它等价于:(int a = 4; a <=1; i++),因为还是按升序,那正确的做法应该是这样:

其中downTo是一个中缀表达式:

其中还可以加入步长:

我们知道对于Java而言范围基本上都是左闭右开区间,而我们看到的Kotlin表示范围的都是左闭右闭区间,其实也有方式来表达跟Java一样的左闭右开的效果,如下:

异常体系:

在Kotlin中也提升了很完善的异常体系,跟Java相同的这里就不多说了,重点是来学习跟Java所不同的:

1、在Kotlin中的try是一个表达式,可以将结果赋值给一个变量,下面看一下代码:

接下来将字符串改成非数字的:

2、Kotlin中是没有checked exception的,我们知道在Java中有两种异常,一种是RuntimeException,也就是unchecked exception,还有一种是非运行时异常,它是checked exception,所以checked exception也就是在我们编写代码时就必须得进行捕获的,所以代码中就会充斥掉大量的try..catch..finally类似的代码,而在Kotlin中所有的异常都是运行期异常,都不需要在编写代码时强制要进行try..catch..

Kotlin中Range与异常体系剖析的更多相关文章

  1. (3)简单说说java中的异常体系

    java异常体系 |--Throwable 实现类描述java的错误和异常 一般交由硬件处理 |--Error(错误)一般不通过代码去处理,一般由硬件保护 |--Exception(异常) |--Ru ...

  2. Java中异常体系

    Java中的异常体系 Throwable,是一个类,表示可抛出的,它是所有的异常都继承的类. Throwable的子类,又分为两种,一种是Error,另一种是Exception. Error一般不是应 ...

  3. 夯实Java基础系列10:深入理解Java中的异常体系

    目录 为什么要使用异常 异常基本定义 异常体系 初识异常 异常和错误 异常的处理方式 "不负责任"的throws 纠结的finally throw : JRE也使用的关键字 异常调 ...

  4. java中的异常体系?throw和throws的区别?

    一.java中的异常体系 Thorwable类(表示可抛出)是所有异常和错误的超类,两个直接子类为Error和Exception,分别表示错误和异常.其中异常类Exception又分为运行时异常(Ru ...

  5. spark 源码分析之十八 -- Spark存储体系剖析

    本篇文章主要剖析BlockManager相关的类以及总结Spark底层存储体系. 总述 先看 BlockManager相关类之间的关系如下: 我们从NettyRpcEnv 开始,做一下简单说明. Ne ...

  6. Java基础——异常体系

    在Java中,异常对象都是派生于Throwable类的一个实例,Java的异常体系如下图所示: 所有的异常都是由Throwable继承而来,在下一层立即分解为两个分支,Error和Exception. ...

  7. Spring揭秘读书笔记 八 数据访问异常体系

    这篇博客 来自spring揭秘一书的第十三章 为什么要有访问异常都有一个体系,这个我们得从DAO模式说起. DAO模式 任何一个系统,不管是一个最简单的小系统,还是大规模的系统,都得跟数据打交道,说白 ...

  8. 【55】java异常机制剖析

    一.为什么要使用异常 首先我们可以明确一点就是异常的处理机制可以确保我们程序的健壮性,提高系统可用率.虽然我们不是特别喜欢看到它,但是我们不能不承认它的地位,作用.有异常就说明程序存在问题,有助于我们 ...

  9. Java 异常体系(美团面试)

    Java把异常作为一种类,当做对象来处理.所有异常类的基类是Throwable类,两大子类分别是Error和Exception. 系统错误由Java虚拟机抛出,用Error类表示.Error类描述的是 ...

随机推荐

  1. Ajax跨域请求附带Cookie/Ajax跨域请求附带身份凭证

    一.跨域请求中默认不带cookie等验证凭证 尤其对于post请求. 对于ajax请求,其中post,get都可以正常访问. withCredentials: false, // 允许携带cookie ...

  2. mysql 开启日志服务

    mysql 版本:mysql-5.7 1.在/etc/my.cnf 中添加如下内容: #错误日志: -log-err log-error=/usr/local/mysql--linux-glibc2. ...

  3. python读取excel数据并以第一行标题加内容组成字典格式返回

    excel结构如图所示: 代码: import xlrd ''' 通用获取excel数据 @:param path excel文件路径 @:param sheet_name excel文件里面shee ...

  4. Mysql的BigInt(20),Int(20)以及Bigint(32)有区别吗?

    原文: http://stackoverflow.com/questions/3135804/types-in-mysql-bigint20-vs-int20-etcc http://dev.mysq ...

  5. [转帖]Exadata X8发布

    Exadata X8发布 2019-04-09 10:45:32 dingdingfish 阅读数 193 文章标签: ExadataOracleX8 更多 分类专栏: Exadata   版权声明: ...

  6. Golang 读写文件

    读文件 func ReadFile_v1(filename string) { var ( err error content []byte ) fileObj,err := os.Open(file ...

  7. 6. 运行Spark SQL CLI

    Spark SQL CLI可以很方便的在本地运行Hive元数据服务以及从命令行执行任务查询.需要注意的是,Spark SQL CLI不能与Thrift JDBC服务交互.在Spark目录下执行如下命令 ...

  8. vue中sessionStorage的使用

    转载:https://www.cnblogs.com/denken/p/11197612.html localStorage 和 sessionStorage 属性允许在浏览器中存储 key/valu ...

  9. Spark之RDD弹性特性

    RDD作为弹性分布式数据集,它的弹性具体体现在以下七个方面. 1.自动进行内存和磁盘数据存储的切换 Spark会优先把数据放到内存中,如果内存实在放不下,会放到磁盘里面,不但能计算内存放下的数据,也能 ...

  10. LOJ#2409. 「THUPC 2017」小 L 的计算题 / Sum(生成函数)

    题意 给定一个长为 \(n\) 的序列 \(\{a_i\}\) 对于 \(k \in [1, n]\) 求 \[ f_k = \sum_{i = 1}^{n} a_i^k \pmod {9982443 ...