近来项目需要用到List<MyObject>存放一序列的乱序对象列表,必须进行排序后使用,就想到Java自带的Collections.sort的排序功能,在华为、小米、蓝绿厂的手机测试都问题不大,但是,但是。。。突然来了个客诉,
try {
Collections.sort(pakList);// 该排序某些机型不支持CopyOnWriteArrayList
} catch (UnsupportedOperationException e) {
Log.w(TAG, "该机型不支持CopyOnWriteArrayList的通用排序");
return;
}
排查后定位是排序功能失效并造成app崩溃闪退。老规矩,百度谷歌一段查,最终在Why does collections.sort throw unsupported operation exception while sorting by comparator in Java? - Stack Overflow
找到答案的端倪。
解决方案:把自定义的对象排序字段(Integer)抽取出来排序,或者使用能自动排序的容器Set or Map