对集合中指定元素进行比对并进行重排序(根据蓝牙信号对设备进行排序)

本文介绍了一种基于RSSI信号强度对比蓝牙设备(BleDevice)的内部比较器实现方法,并提供了一个具体的排序函数示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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>()方法将要排序集合与该类实例传入,即可根据该类中设定的排序规则对该集合进行排序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值