Kotlin对象表达式:比较器示例

您所在的位置:网站首页 rudy是什么意思 Kotlin对象表达式:比较器示例

Kotlin对象表达式:比较器示例

2023-04-06 00:06| 来源: 网络整理| 查看: 265

此代码基本上按降序对数组进行排序:

val arrayList = arrayListOf(1, 5, 2) Collections.sort(arrayList, object : Comparator { override fun compare(x : Int, y: Int) = y - x })

世界上如何将比较方法与y - x作品重叠?科特林怎么知道是什么y - x意思把y之前x如果y ?

1> eski..:

这实际上与Kotlin无关.它与Java API的Comparator接口有关,也与Collections.sort如何使用它有关.

从文档:

比较它的两个参数的顺序.返回负整数,零或正整数,因为第一个参数小于,等于或大于第二个参数.

现在让我们试试你给出的论点:

1 - 5 = -4(负整数),因此1小于5.

5 - 2 = 3(正整数),因此5大于2.

等等...

Collections.sort对y-x的含义一无所知.它只是尊重Comparator接口的定义合同,任何实现者也需要尊重(如果它想要工作).

事实恰恰相反,这y - x是一个尊重合同的实现,因为Math.

2> Willi Mentze..:

由于Comparator是SAM界面,因此您可以使用lambda编写以下代码,以使其更加简洁:

Collections.sort(arrayList, {x : Int, y: Int -> y - x})

甚至

Collections.sort(arrayList) { x, y -> y - x }

因为lambda是sort函数的最后一个参数,x并且y可以推断出和的数据类型。

接受两个对象并为其定义一个整数是对排序定义的抽象。基本上,您可以指定如果排序,将按哪些顺序布置这些元素。

为了对整数进行排序,这似乎有些矫kill过正,但是考虑对诸如类实例之类的更复杂的对象进行排序Car。

此类有一个colorCode,您想按此排序:

Collections.sort(cars) { car1, car2 -> car1.colorCode - car2.colorCode }

这就是您以抽象方式为这些对象定义顺序的方式。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3