Kotlin对象表达式:比较器示例 |
您所在的位置:网站首页 › rudy是什么意思 › Kotlin对象表达式:比较器示例 |
此代码基本上按降序对数组进行排序: 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 |