之前也介绍了不少排序方法,基本上都是对数值进行排序,那如果需要对对象进行排序,该如何处理?例如:对宠物进行排序,该以什么样的规则进行排序?
在给对象排时,我们需要先找到可以量化的比较对象,例如上面的宠物就可以按照它们的年龄进行排序,这时候我们就得在其类中,从写compareTo(),重写前,该类需要使用Comparable,以宠物类为例:(idea 快捷键 类在使用Comparable接口后,alt+ins,选择overrideMethod,在选择compareTo,然后按照比较对象的属性进行改写)
创建Pet类,有属性int age,无参构造、有参构造,重写toString方法,并实现Comparable接口
并创建Dog类,继承Pet,并调用父类有参构造
Pet类:
Dog类
在创建测试类,测试对象排序,创建2个Pet类对象和2个Dog类对象,并存入到集合中,在按照年龄排序,代码及效果如下:
如果相同的对象进行比较,比如狗与狗比较,猫与猫比较,那么就需要对以上代码进行修改,就需要使用泛型限定比较的对象必须是同类型的。
修改代码如下:
Pet类
Dog类也需要改变
此时在运行之前t测试类代码,就会报错,必须把Pet类的对象和dog类的对象分开存储才能排序