关于Collections.sort()排序的疑惑
来源:9-5 权限模块界面渲染

72fc5c0f8317
2018-03-01
这里的sort()是通过比较器重写的compare()方法,比较两对象的seq,返回一个int值并将它作为一个标记,然后rootList通过这些标记从小到大排序? 排序方法属于那种?
Collections.sort(tempList, aclModuleSeqComparator);
public Comparator<AclModuleLevelDto> aclModuleSeqComparator = new Comparator<AclModuleLevelDto>() {
public int compare(AclModuleLevelDto o1, AclModuleLevelDto o2) {
return o1.getSeq() - o2.getSeq();
}
};
2回答
-
你好,这里需要具体说一下sort排序时的compare方法。排序底层封装时,相当于我们在排序时,最终要放到两个对象的对比上,而两个对象哪个在前哪个在后取决于这里compare的结果。至于谁在前谁在后,有个简单的方法,就是先写一个看看是否和预期一致,不一致时反过来就可以了。
有时,返回0时要考虑更细节的排序,就是引入更多字段参与排序。
这里的sort方法呢,通过compare方法允许调用者定义自己的排序规则,借助compare方法的返回值决定两个待排序对象的顺序。自己做一些通用的实现时也可以引入这种设计,把核心规则部分提出来,允许使用者自定义规则,当然这里也支持默认的规则。
012018-03-02 -
72fc5c0f8317
提问者
2018-03-01
tempList打错成rootList
00
相似问题