我们在使用Arrays.sort(xx, new Comparator<T>() {});
和Collections.sort(xx, new Comparator<T>() {})
时,明确三点即可:
-
int compare(T o1, T o2)
是“比较o1和o2的大小”。返回“负数”,意味着“o1比o2小”;返回“零”,意味着“o1等于o2”;返回“正数”,意味着“o1大于o2”。 - 默认(原始)顺序是o1在前,o2在后。
- 那么此时如果返回正数,表示需要调整o1,o2的顺序,也就是需要把o2放到o1前面;
- 那么此时如果返回负数,表示不需要调整,o1,o2维持原顺序。
- 关于1中的正数负数指的是o1,o2比较时的ASCII码差值;关于2中的正数负数指的是是否需要交换o1,o2位置。使用时,我们一般把1,2统一起来使用。