(sorteds)) println(xx2.sortedWith(sorteds)) println(xx3.sortedWith(sorteds)) } //输出 [0, 1, 5,...(string: Array) { val text = listOf("one", "two", "three", "four") //我们也可以使用 with自定义compareBy...,默认两个元素是相同类型的才行 println(text.sortedWith(compareBy { it.length })) } //输出 [one, two, four, three]...到这里与排序相关的介绍就结束了。 mutable* 可变集合下排序方法 以上的排序方法,在mutableList等可变集合下。也都是存在的。只是函数名称有一点区别。...numbers.sortByDescending { it.last() } println("按照字符串首字母,从大到小排序: $numbers") numbers.sortWith(compareBy
KotlinSorting.gif 1.概述 Kotlin使用扩展方法构建在Java Collection框架之上。...sortedValues = mutableListOf(1 to "a", 2 to "b", 7 to "c", 6 to "d", 5 to "c", 6 to "e") sortedValues.sortWith(compareBy...如果我们想要将结果作为新集合返回,那么我们需要使用sortedWith方法而不是sortWith方法。 对于降序,我们可以使用反向方法或者定义正确的 比较器。...不需要参数,默认情况下顺序是升序: val ascComparator = naturalOrder() 对于具有多个属性的对象,我们可以使用compareBy方法。...第一个值用于比较,并且只有当值相等时,才会调用it.second来打破平局: val complexComparator = compareBy<Pair<Int, String?
) config.getOutputSizes(targetClass) else config.getOutputSizes(format) return allSizes.sortedWith...(compareBy { it.height * it.width }).reversed()[0] } 复制代码 获取 PREVIEW 的尺寸就需要动下脑子了。...config.getOutputSizes(format) // 获取可用尺寸并按面积从最大到最小排序 val validSizes = allSizes .sortedWith...(compareBy { it.height * it.width }) .map { SmartSize(it.width, it.height) }.reversed()...) val imageReaderSize = getPreviewOutputSize( context, characteristics, ImageReader::class.java
Kotlin作为一门全新的语言,肯定还是要有自己的容器类,不然哪天Java跟Kotlin划清界限,那麻烦就大了。...Kotlin也拥有三类基本的容器,分别是集合Set、队列List、映射Map,每种容器又分作只读与可变两种类型这是为了判断该容器能否进行增删改等变更操作。...与数组不同的是可变集合的大小可以动态改变。 List: 是一个有序集合,可通过索引(反映元素位置的整数)访问元素。元素可以在 list 中出现多次。...元素的键与值是一一对应的关系,相同的键名指向的值对象是唯一的,所以映射中每个元素的键名各不相同,这个特性使得映射的变更操作与队列存在以下不同之处(注意增删操作必须由MutableMap来完成): 不可变集合...", 80},{"C", 80},{"Kotlin", 90},{"Dart", 99}] //使用sortWith进行排序,适合多条件排序 languageList.sortWith(compareBy
= lists.sortedBy { it.length } val sortedByDescending = lists.sortedByDescending { it.length } val sortedWith...= lists.sortedWith( compareBy { it.length }.thenBy { it } ) 这些都是常见的排序方法,基本可以涵盖我们大部分的使用场景...由此可见,大部分场景下,我们甚至都不用再使用集合的遍历功能,通过这些辅助的高阶函数,就可以很方便的对集合进行操作,这也是Kotlin代码会比Java更加容易开发的原因,当然,Kotlin的函数式编程方式...,会比Java的上手难度更高。
State = ButtonState2() // override fun restoreState(state: State) {} // // // 这个类与Java...与Kotlin中的对应关系 * 类A在另一个类B中声明 在Java中 在Kotlin中 * 嵌套类(不存储外部类的引用) static...===与java中的 ==比较对象引用的效果一模一样 // 代码清单 4.19 为Client类实现 equals() class Client3(val name: String...单一实例 声明结合到了一起 // 表示一个组织的工资单 // object Payroll { // val allEmployees = arrayListOf...伴生对象(与包级别函数和属性 起)替代了 Java 静态方法和字段定义 伴生对象与其他对象一样,可以实现接口,也可以拥有有扩展函数和属性 对象表达式是 Kotlin 中针对 Java 匿名内部类的替代品
companion object { //静态变量,ArrayList保存开发者缓存View var sCustomViewCaches: ArrayList = arrayListOf...val viewHolderField = RecyclerView.LayoutParams::class.java.getDeclaredField...isAccessible = true } //等效于...主要是为了复用 with( RecyclerView.ViewHolder::class.java.getDeclaredField...与测量机制有关。
二、笔记 1、 操作符重载要注意的 a += b 与 a = a.plus(b) 或者 a.plusAssign(b) 两者都完全等同( + - * / % 一样) val list = arrayListOf...下面是测试代码: fun main(vararg parameters:String) { val source = arrayListOf(1, 2, 3) val destination...= arrayListOf() //copyDataVersion1(source, destination) //Error!...} } } 毫无疑问代码是没有问题的,那么我们看下反编译 Kotlin 后的 Java 代码(无关省略): if(GlobalKt.isVisible((View)button)) {
文章目录 Kotlin简介 Kotlin与Java的异同 1.函数 2. 变量 变量类型 可变变量 不可变变量 3. 类和属性 有参数的构造方法 setter 和 getter 4....Kotlin简洁、安全、务实,并且专注于与Java代码的互操作性。它几乎可以用在现在Java使用的任何地方:服务端开发、Android应用等等。...Kotlin 是务实的、安全的、简洁的,与Java可互操作,意味着它专注于使用已经证明过的解决方案处理常见任务,防止常见的像NullPointerException这样的错误,支持紧凑和易读的代码,以及提供与...Kotlin与Java的异同 1.函数 kotlin: fun main(args: Array) { println("Hello, world!")...val languages = arrayListOf("Java") languages.add("Kotlin") Java: final int answer = 0 final
Kotlin拥有强大的IDE厂商Intellij和Google的支持,保证了其务实、简洁、安全和与JAVA互操作的良好设计理念。...与Java互操作以为这可以与Java相互调用、混合调试以及同步重构,同时支持Java到kotlin代码的自动转换。...与Java不太一样的地方 static 与 伴生对象 在Kotlin中并没有static这个关键字,如果想要实现类似于Java中static的用法,需要声明伴生对象companion object。...使用object声明的类实际上是一个单例,可以支持直接调用其中的属性与方法。使用了companion修饰的object实际上是可以放在其他类内部的单例,因此可以实现类似于Java中static的效果。...同时Java与Kotlin都会对泛型进行运行时擦除,Kotlin不一样的是可以对inline方法使用reified关键字来提供运行时类型。
使用OO范式编程的大致过程为: 划分对象 → 抽象类 → 将类组织成为层次化结构(继承和合成) → 用类与实例进行设计和实现 等几个阶段。...(3)映射 映射与集或列表有明显区别,映射中每个项都是成对的。...(array); } } 另外,我们还可以直接使用arrayListOf函数来创建一个Java中的ArrayList对象实例: >>> val list = arrayListOf(0,1,2,3...另外,我们可以直接使用Kotlin封装的arrayListOf函数来创建一个ArrayList: >>> val list4 = arrayListOf(1, 2, 3) >>> list4::class...: Unit { if (size > 1) sortWith(compareBy(selector)) } public inline fun > MutableList
相当于Java的final变量。 var - 可变引用。 普通的Java变量。 在定义了val变量的代码块执行期间,val变量只能进行唯一一次初始化。...例如: val languages = arrayListOf("Java") // 声明不可变引用 languages.add("Kotlin") // 改变引用指向的对象...} when 1、在 when 结构中使用任意对象 fun mix(c1: Color, c2: Color) = { // when 表达式的实参可以是任何对象,它被检查是否与分支条件对等...binaryReps) { LogUtil.e("$letter = $binary") } // 迭代集合时 使用下标 val list = arrayListOf...for、while、和 do-while 循环与java类似,但是for循环现在更加方便,特别是当你需要迭代map的时候,又或是迭代集合需要下标的时候。 简洁的语法 1…5 会创建一个区间。
的配置使用说完了,但是相信很多人对上面的一些语法都不了解,这里来简单说明: // Kotlin 提供的方法,能简单快速的生成一个数组 val array = arrayOf("1", "2") // 与之类似的还有...arrayListOf() 、 setOf() 等,以后详细说明 // 类对象 A::class // 相当于 Java 中的 A.class,同时还有 A.javaClass 相当于 Java
numbers.sortedByDescending { it.last() } // 根据最后一个字符倒叙 println("$sortedByLast") // [four, two, one, three] sortedWith...为此,调用传入 Comparator 的 sortedWith() 函数。...使用此函数,按照字符串长度排序如下所示: val numbers = listOf("one", "two", "three", "four") println("${numbers.sortedWith...(compareBy { it.length })}") // [one, two, four, three] 11.3、倒叙 reversed() 你可以使用 reversed() 函数以相反的顺序检索集合...//输出结果:42 val strings = listOf("one", "two", "three", "four") val longestString = strings.maxWith(compareBy
: fail("No address") 6.3 数组与集合 /**-------------------- 6.3.1 可空性和集合 ----------------------*/...* - add() * - remove() * - clear() */ // 代码清单6.24 使用只读集合接口与可变集合接口...(3, 5, 7) val target: MutableCollection = arrayListOf(1) copyElements(source, target...* 集合类型 只读 可变 * List listOf mutableListOf、arrayListOf...并不会区分只读集合与可变集合,即使Kotlin中把集合声明成只读的,Java代码页能够修改这个集合。
Kotlin 标准库中就是这么实现的: fun main(args: Array<String ) { val list = arrayListOf(1, 2) list += 3 // 添加元素到自身集合...b.contains(a) println("hello" in arrayListOf("hello", ", ", "world")) /* true */ 在 for 循环中使用 in 操作符会执行迭代操作...Java 的 a.equals(b) 相当于 Koltin 的 a == b,Java 的 a == b 相当于 Kotlin 的 a === b(同一性检查)。...操作符函数与 Java Java 中调用 Kotlin 中的操作符方法,就跟调用普通方法一样,你不能期望在 Java 中写 new Point(1, 2) + new Point(3, 4) 这样的语法...例如:arrayList[0] 相当于 Java 中 arrayList.get(0),尽管这个 get 方法是 Java 中定义的。
相当于Java的final变量。 var - 可变引用。 普通的Java变量。 在定义了val变量的代码块执行期间,val变量只能进行唯一一次初始化。...例如: val languages = arrayListOf("Java") // 声明不可变引用 languages.add("Kotlin") // 改变引用指向的对象...} when 1、在 when 结构中使用任意对象 fun mix(c1: Color, c2: Color) = { // when 表达式的实参可以是任何对象,它被检查是否与分支条件对等...binaryReps) { LogUtil.e("$letter = $binary") } // 迭代集合时 使用下标 val list = arrayListOf...for、while、和 do-while 循环与java类似,但是for循环现在更加方便,特别是当你需要迭代map的时候,又或是迭代集合需要下标的时候。 简洁的语法 1..5 会创建一个区间。
其实,只要了解了Java泛型,那么Kotlin泛型就迎刃而解了。 首先,我们来想想,我们为什么需要泛型。...fun main() { val family = arrayListOf() family.add(Parent("Father")) family.add(Son...Kotlin,或者说Java的泛型,实际上是一种伪泛型,即泛型只在申明时检查泛型是否有效,在编译时,泛型类型会被擦除,这是因为Java的历史原因所导致的,由于它为了兼容没有泛型的老Java版本,从而做出的妥协...逆变 逆变是泛型型变的第二种方式,与协变类似,逆变也是将某一个泛型类型,拓展了其父类类型,例如下面这个方法。...fun work(family: MutableList) { family.forEach { println(it.talk()) } } val family = arrayListOf
只是简单的整合介绍 # 安装 下载elasticsearch与kibana https://www.elastic.co/start # 依赖 springBootVersion = '2.0.5.RELEASE...return PreBuiltTransportClient(settings).addTransportAddress(node) } } # 名词解释 elasticsearch中的名词与mysql...# 使用 个人理解:相当于mysql的建表,程序跑起来之后elasticsearch会建立相应的index与type,后续程序中就可以使用该类型的index与type进行crud package com.futao.springmvcdemo.model.entity...execute() .actionGet() .hits val list: ArrayList = arrayListOf...() hits.forEach { it -> list.add(JSONObject.parseObject(it.sourceAsString, Article::class.java
顺便复习一下Kotlin中的伴生对象:Kotlin 进阶 object关键字介绍与学习 (zinyan.com)知识。...在Kotlin中的泛型定义和java中其实很类似。都是使用来进行标注。 小知识:泛型并不是必须用T字母来代替。...java中的泛型也是可以使用其他字母来代替的。 1.1 多类型定义 我们在上面的示例中只是定义了一种泛型,那么如果有两种甚至更多的数据定义为泛型呢?下面就来介绍多种泛型类型的定义。...this[0] else null fun main(args: Array) { //我们获取一个Arraylist 数组 var s = arrayListOf
领取专属 10元无门槛券
手把手带您无忧上云