1700444491
编写高质量代码:改善Java程序的151个建议 建议73:使用Comparator进行排序
1700444492
1700444493
在项目开发中,我们经常要对一组数据进行排序,或者升序或者降序,在Java中排序有多种方式,最土的方法就是自己写排序算法,比如冒泡排序、快速排序、二叉树排序等,但一般不要自己写,JDK已经为我们提供了很多的排序算法,我们采用“拿来主义”就成了。
1700444494
1700444495
在Java中,要想给数据排序,有两种实现方式,一种是实现Comparable接口,一种是实现Comparator接口,这两者有什么区别呢?我们来看一个身边的例子,就比如给公司职员排序吧,最经常使用的是按照工号排序,先定义一个职员类代码,如下所示:
1700444496
1700444497
class Employee implements Comparable<Employee>{
1700444498
1700444499
//id是根据进入公司的先后顺序编码的
1700444500
1700444501
private int id;
1700444502
1700444503
//姓名
1700444504
1700444505
private String name;
1700444506
1700444507
//职位
1700444508
1700444509
private Position position;
1700444510
1700444511
public Employee(int_id, String_name, Position_position){
1700444512
1700444513
id=_id;
1700444514
1700444515
name=_name;
1700444516
1700444517
position=_position;
1700444518
1700444519
}
1700444520
1700444521
/*id、name、position的getter/setter方法省略*/
1700444522
1700444523
//按照id号排序,也就是资历的深浅排序
1700444524
1700444525
@Override
1700444526
1700444527
public int compareTo(Employee o){
1700444528
1700444529
return new CompareToBuilder()
1700444530
1700444531
.append(id, o.id).toComparison();
1700444532
1700444533
}
1700444534
1700444535
@Override
1700444536
1700444537
public String toString(){
1700444538
1700444539
return ToStringBuilder.reflectionToString(this);
[
上一页 ]
[ :1.70044449e+09 ]
[
下一页 ]