2018-10-29

2018-10-30  本文已影响0人  单是一个姓

list排序、Collections排序

排序两种方式

1 对象实现Comparable接口中compareTo方法
2 不用继承接口,外部直接比较,实现方法 Collections.sort( list, new Comparator() {...}) 

不同之处

1 用 Comparator 是策略模式,就是不改变对象自身,而用一个策略对象来改变它的行为。 
2 Comparable改变对象自身。耦合性比较高

Integer、String等都实现了Comparable接口,默认是升序排序(排序后前者小于后者)

// 正序排列
public int compare(int o1, int o2) {
    return o1 - o2;
}
// 逆序排列
public int compare(int o1, int o2) {
    return o2 - o1;
}
# 返回负数表示o1排在o2前面,返回正数代表o1排在o2后面
List list = new ArrayList<>();
list.add(2);
list.add(1);
Collections.sort(list);
System.out.println(list);    //[1, 2]

List list = new ArrayList<>();
list.add("e");
list.add("f");
Collections.sort(list);
System.out.println(list);  //[e, f]

具体查看源码

注意:

1  Collections.reverse(list) 是反转,不是倒叙或者降序
2 Collections.sort(list, Collator.getInstance(java.util.Locale.CHINA)); // 中文进行排序
上一篇下一篇

猜你喜欢

热点阅读