internal class ComparatorBleDeviceImpl : Comparator<BleDevice> {
override fun compare(s1: BleDevice, s2: BleDevice): Int {
val age1 = s1.rssi
val age2 = s2.rssi
return if (age1 < age2) {
1
} else if (age1 > age2) {
-1
} else {
0
}
}
}
internal的意义是同一模块类可见,类似于public等修饰符,不用深究.首先定义一个类,继承Comparator接口,泛型限定传入进行比对数据或者Bean的类型.
然后在实现方法compare()中通过对数据两者数据的比对结果进行设定.
/**
* 按bean的属性值对list集合进行排序
* @param list 要排序的集合
* @return 排序后的集合对象
* 根据信号强度排序
*/
fun sortBleList(list: ArrayList<BleDevice>): ArrayList<BleDevice> {
val comp = ComparatorBleDeviceImpl()
Collections.sort<BleDevice>(list, comp)
return list
}
接着实例化该类,通过Collections.sort<T>()方法将要排序集合与该类实例传入,即可根据该类中设定的排序规则对该集合进行排序