我正在尝试接收系统上所有可用的传感器,并根据传感器名称对它们进行字母排序。
我正在使用Collections
和Comparator
,因为我在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());
}
});
问题,为什么我收到此错误?
答案 0 :(得分:2)
正如您所见in the source code(我知道这是一些旧的源代码,但确实如此),返回的列表为immutable。
修复方法是复制列表:
List<Sensor> sensorList = new ArrayList<Sensor>(sensorManager.getSensorList(Sensor.TYPE_ALL));