尝试排序传感器列表

时间:2015-09-01 09:55:08

标签: android sorting collections

我正在尝试接收系统上所有可用的传感器,并根据传感器名称对它们进行字母排序。

我正在使用CollectionsComparator,因为我在this回答中找到了,但我收到UnsupportedOperationException错误。

代码:

SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
List<Sensor> sensorList = sensorManager.getSensorList(Sensor.TYPE_ALL);
Collections.sort(sensorList, new Comparator<Sensor>() {
    @Override
    public int compare(Sensor leftSensor, Sensor rightSensor) {
        return leftSensor.getName().compareTo(rightSensor.getName());
    }
});

问题,为什么我收到此错误?

1 个答案:

答案 0 :(得分:2)

正如您所见in the source code(我知道这是一些旧的源代码,但确实如此),返回的列表为immutable

修复方法是复制列表:

List<Sensor> sensorList = new ArrayList<Sensor>(sensorManager.getSensorList(Sensor.TYPE_ALL));