好用的集合扩展方法:

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

如果我们想取出集合中的第一个值和最后一个值,用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. java学习摘抄笔记mybaits2

    mybatis第二天  高级映射 查询缓存 和spring整合 课程复习: mybatis是什么? mybatis是一人持久层框架,mybatis是一个不完全的ORM框架.sql语句需要程序员自己去编 ...

  2. python的帮助信息的写法

    # coding = utf-8from optparse import OptionParserfrom optparse import OptionGroup usage = 'Usage: %p ...

  3. 22 Maven高级应用

    1.Maven基础知识回顾 maven是一个项目管理工具.依赖管理:maven对项目中的jar包的管理过程.传统的工程我们直接将jar包放置到项目中. maven工程真正的jar包放置在仓库中,项目中 ...

  4. js实现图片资源转化成base64的各种场景

    网络上有很多片介绍通过js将图片转换成base64的文章,之所以再写这篇文章的原因时发现没有找到系统的介绍的文章,有的介绍如何实现本地项目的图片转码,有的介绍如何实现网络资源的图片转化,但是系统介绍的 ...

  5. PostgreSQL学习笔记(一)—— macOS下安装

    安装命令:brew install postgresql 我的终端是zsh,所以添加环境变量到~/.zshrc vim ~/.zshrc export PATH=$PATH:/usr/local/Ce ...

  6. java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens

    请求的协议不对  解决方案: 把请求的https改成http 

  7. javascript document.createElement() document.createTextNode() appendChild()

    //--------------document.createElement("div") var div = document.createElement("div&q ...

  8. Spring-Cloud之Config配置中心-7

    一.我们前面基本上都是讲解的Spring Cloud Netflix的组件,下面我们会重点说Spring Cloud Config分布式配置中心.为什么需要这个组件来管理配置呢?在分布式应用开发过程中 ...

  9. K-匿名算法研究

    12月的最后几天,研究了下k匿名算法,在这里总结下. 提出背景 Internet 技术.大容量存储技术的迅猛发 展以及数据共享范围的逐步扩大,数据的自动采集 和发布越来越频繁,信息共享较以前来得更为容 ...

  10. DOS之del命令

    基本 del命令是用来删除一个或多个文件的,删除文件夹的话还要用rd命令. 举个栗子: 例如我们要删除C盘中的a.txt,我们就可以 del a.txt 也可以同时删除多个,用空格,逗号或分号分开文件 ...