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

Kotlin】集合操作 ① ( List 创建与元素获取 | 安全获取集合元素 | getOrElse | getOrNull )

文章目录 一、List 创建与元素获取 二、安全获取集合元素 1、getOrElse 函数 2、getOrNull函数 三、List 创建与元素获取代码示例 一、List 创建与元素获取 ----...Kotlin 中的集合分为两类 , 只读集合 和 可变集合 ; 调用 listOf 函数 , 可以 直接创建 List 集合 ; 通过 [] 下标可以 直接获取 List 集合中的元素 ; fun main...除了使用 [] 下标获取 List 集合元素外 , Kotlin 还提供了 安全获取集合元素的 方法 : getOrElse 和 getOrNull 函数 ; 1、getOrElse 函数 List<...*/ @kotlin.internal.InlineOnly public inline fun List.getOrElse(index: Int, defaultValue: (Int...函数原型 : /** * 返回给定[index]处的元素,如果[index]不在列表范围内,则返回' null '。

1.4K20

【Groovy】闭包 Closure ( 闭包参数绑定 | curry 函数 | rcurry 函数 | ncurry 函数 | 代码示例 )

;'] * assert d(4) == 10 * def e = d.curry(4) * assert e.parameterTypes.name == ['[Ljava.lang.Object...之前的默认值就覆盖了 // 此时第一个参数没有值了 // 调用时 , 必须传入第一个参数只才可以 def closure8 =closure5.ncurry(1, "Kotlin...// 闭包的第一个默认值被取消 , 此时必须传入第一个参数的值才能执行该闭包 // 否则报错 closure8(3) 执行结果 : 0 : Groovy 3 : Kotlin...之前的默认值就覆盖了 // 此时第一个参数没有值了 // 调用时 , 必须传入第一个参数只才可以 def closure8 =closure5.ncurry(1, "Kotlin...Hello Not Accept Arguments Not Accept Arguments 1 2 1 : 2 3 : 4 0 : Groovy 1 : Gradle 2 : Java 3 : Kotlin

99230
您找到你想要的搜索结果了吗?
是的
没有找到

Java 数组转型和范型

可是具体运行的时候报异常,如下: Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; 但是如果这样写就没有问题...数组的类型是[Ljava.lang.Object,把[Ljava.lang.Object转换成[Ljava.lang.String是显然不可能的事情,因为这是一个向下转型,而虚拟机只保存了这是一个Object...的数组,不能保证数组中的元素是String的,所以这个转型不能成功。...数组里面的元素只是元素的引用,不是存储的具体元素,所以数组中元素的类型还是保存在Java虚拟机中的。 根据上面的解释,我们可以把这个问题归纳到下面这个模型。    ...public T[] toArray(T[] a); 这个方法把List中的全部元素返回一个相同大小的数组,数组中的所有元素都为T类型。

56730

转向Kotlin——枚举类和扩展

默认状态下,直接输出枚举类的元素值,会输出元素值的名称。 为枚举值指定数值 其实枚举类每一个值就是当前枚举类的对象,因此,如果要为每一个枚举类的值指定一个数字,直接通过构造器传入即可。...Kotlin既可以对JDK的API进行扩展,也可以对Kotlin进行扩展。...这段代码放到哪个Kotlin文件中都可以,一般会放到Kotlin文件顶层,当然,也可以放在调用swap方法的前面。...但成员变量需要声明为public,否则扩展属性无法访问。 扩展伴随对象 伴随对象:解决Kotlin类中没有静态成员所带来的尴尬。 如果类中右伴随对象,可以利用扩展为伴随对象添加成员。...文件中,当然,同一个包的不同Kotlin文件中也是一样的,但是如果在不同包中的Kotlin里,就要使用import导入相应的资源了。

1.3K20

Kotlin 协程】Flow 流组合 ( Flow#zip 组合多个流 | 新组合流的元素收集间隔与被组合流元素发射间隔的联系 )

文章目录 一、Flow 流组合 1、Flow#zip 组合多个流 2、新组合流的元素收集间隔与被组合流元素发射间隔的联系 一、Flow 流组合 ---- 1、Flow#zip 组合多个流 调用 Flow...Two 2022-12-26 16:39:29.433 30002-30002/kim.hsl.coroutine I/System.out: num = 3, str = Three 2、新组合流的元素收集间隔与被组合流元素发射间隔的联系...假如两个 Flow 流的 元素发射 不同步 , 则 先发射的元素 , 需要等待对应顺序的 后发射的元素到来 ; 在下面的代码中 , numFlow 的发射元素间隔为 100ms , strFlow 发射元素间隔为...1000ms , 则 numFlow 元素收集到之后 , 需要等待 strFlow 元素收集 , 也就是 二者合并后的间隔以 慢的为准 , 合并后的流 发射间隔为 1000ms ; 代码示例 : package

79720

认识下 Kotlin 反射背后的男人:@Metadata

正文 Kotlin 允许我们对各种 Kotlin 的语法特性进行访问,不过,这里应该有一个问题没有搞清楚:既然 Java 反射对于 Kotlin 的很多特性都无法访问和识别,换句话说,Java 虚拟机也是无法知道他们的...,那么 Kotlin 的反射是如何做到这一点的呢?...这实际上主要是得益于 kotlin.Metadata 这个注解。Kotlin 反射过程中,注解的内容解析之后会实例化一个叫做 KotlinClassHeader 的类。...此外,d1 中使用换行符 \n 来分隔,分开的结果与 d2 的元素一一对应。...值得一提的是,d2 当中也存储了函数参数名 param,也正是这样,Kotlin 反射才可以在 Java 1.8 之前的字节码版本中获取函数参数名。

3.2K31

Kotlin 集合 排序详解

前言 本篇文章,我们开始学习Kotlin中集合的排序操作 实际使用中,我们针对集合对象的排序属于高频操作了。 那么Kotlin是如何给我们提供集合的排序呢?排序是有别于Group分组的。...(公众号中无法访问外网,可以通过阅读原文进行查询) Kotlin 集合 基本介绍 - Z同学 (zinyan.com) Kotlin 集合 转换,过滤和检测 - Z同学 (zinyan.com) Kotlin...集合 plus,minus和分组group详解 - Z同学 (zinyan.com) Kotlin 集合 查询,检测,截取等方法介绍 - Z同学 (zinyan.com) 自然排序 kotlin 已经实现了的排序方式...元素从大到小和从小到大的排序。 sorted() 从小到大排序 kotlin给集合对象实现了一个sorted() 函数,实现了默认的自然排序效果。 也就是按照数值的从小到大进行排序。...reversed不改变集合元素的位置。只是改变了顺序。

55430

Kotlin Maps:五个基本函数

Kotlin对开箱即用的maps提供全面支持。首先,您可以在本地使用Java 的集合框架,这是业内最知名且久经考验的框架之一。此外,Kotlin 添加了一些额外的功能,使maps使用起来更加方便。...Kotlin 中maps的用途 在使用maps之前了解什么是maps。本质上,映射是键值对的集合。关键是标识符。您可以使用它来查找集合中的特定元素。该值是您要存储的数据,它与一个键相关联。...支持 Kotlin Maps 的不变性 有趣的是,Kotlin 中maps的标准接口是不可变的。这意味着什么?一旦初始化maps实例,就不能再更改它。减少对象的可变性是最佳实践。..., 2) // Won't remove the pair numbers.remove("three", 3) // Will remove the pair 这三种方法包括插入、替换、访问和删除元素...使用此操作后,您将无法访问之前存在的任何键或值。 numbers.clear() // numbers.size will be 0 从本质上讲,这类似于创建新maps并从头开始。

2.3K10

数组转换成list集合_字符串转数组js

如果添加元素是会报错的(但是如果转换后的集合只是用来进行查询不进行增加元素也可以这样转换): String str[] = {"1","2","3"}; List<String...[代表以为数组,L代表数组的元素是引用类型,后面是具体的元素类型   对于这个现象我们可以这么解释:Java中允许向上和向下转型,但是这个转型是否成功是根据Java虚拟机中这个对象的类型来实现的。...数组的类型是[Ljava.lang.Object。...把[Ljava.lang.Object转换成 [Ljava.lang.String是显然不可能的事情,因为这里是一个向下转型,而虚拟机只保存了这是一个Object的数组,不能保证数组中的元素 是String...数组里面的元素只是元素的引用,不是存储的具体元素,所以数组中元素的类型还是保存在Java虚拟机中的。

4.1K30

Kotlin Vocabulary | 唯一的 "对象"

Kotlin 中的单例 那么我们再来看看 KotlinKotlin 中并没有静态方法或者静态字段,那么我们如何在 Kotlin 中创建单例呢?...当 Singleton 类进行初始化的时候,JVM 会从同步代码块中获得一个锁,如此一来,其它线程就无法访问它。...如果想查看一个 Kotlin 类的字节码,依次选择 Tools > Kotlin > Show Kotlin Bytecode。...即使它支持传参,由于静态代码块无法访问构造方法中的非静态参数,所以传入的参数也无法使用。 ⚠️ 和其它静态方法一样,静态的初始化代码块只能访问一个类的静态属性。...静态的代码块的调用要早于构造方法,所以静态代码块无法访问对象的属性或者传递给构造函数的参数。 companion object companion object 和 object 相类似。

1.5K60

Kotlin 协程】Flow 流异常处理 ( 收集元素异常处理 | 使用 try...catch 代码块捕获处理异常 | 发射元素时异常处理 | 使用 Flow#catch 函数捕获处理异常 )

文章目录 一、Flow 流异常处理 二、收集元素异常处理 1、收集元素异常代码示例 2、收集元素捕获异常代码示例 三、发射元素异常处理 1、发射元素异常代码示例 2、发射元素异常捕获代码示例 一、...Flow 流异常处理 ---- 在 Flow 流 的 构建器代码 : flow , flowOf , asFlow ; 发射元素 : emit 发射元素 ; 收集元素 : collect 收集元素 ;...Flow#catch 函数 发射元素时捕获异常 处理异常 ; 二、收集元素异常处理 ---- 1、收集元素异常代码示例 异常代码示例 : 如果收集的元素 it <= 1 , 则检查通过 , 否则当 it...onCreate$1.invokeSuspend(MainActivity.kt:32) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith...collectToFun$1.invokeSuspend(ChannelFlow.kt:60) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith

1.8K20

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券