为了账号安全,请及时绑定邮箱和手机立即绑定

为什么第二个要创建新对象来比较呢?

Collections.sort(studentList,new StudentCoparator());

正在回答

4 回答

我试了下。其实不用新创建。还是按照Comparable的方法,在Student类中继承Comparator接口,只需要在调用方法new个Student类即可。可以理解为新建的类只是用来重写Comparator接口的compare方法用的,无具体意义。截图如下:

继承接口:

http://img1.sycdn.imooc.com//57f3cd1b0001469305950249.jpg

57f3cc6e00011b2603440108.jpg

57f3cc6f0001a30c03890303.jpg

http://img1.sycdn.imooc.com//57f3cd4f0001803001930246.jpg

1 回复 有任何疑惑可以回复我~
#1

小飞vsKK

我的ID定义是Integer类型,故ID排序是按大小来的,不是按老师说的。
2016-10-04 回复 有任何疑惑可以回复我~
#2

Tom_H 提问者

非常感谢!
2016-10-17 回复 有任何疑惑可以回复我~
#3

暮女神

你做的和老师的不一样!你的是直接在Student类中实现了Comparator接口,而老师的是新建了一个类实现的, 所以要使用该接口,必须先实例化对象!
2017-02-10 回复 有任何疑惑可以回复我~

挖个坟.我也按照 小飞vsKK 的方法 new 了一个Student.然后报错了.原来是  Student这个类,没有定义无参的构造方法.   然后给Student里面创建了一个Student的里面创建了一个无参的

public Student(){

}

就不报错了,也能正常执行.     

一直是跟着老师的步骤做的.老师应该也没再Student的里面添加无参构造方法.

如果有人用小飞vsKK的方法,报错了.可以看看有没有写无参构造方法

(如果老师本来就写了,是我粗心没看到,就无视我这段话吧)

0 回复 有任何疑惑可以回复我~
#1

学习为致及

我tm又自己构思了半天.不知道理解的对不对.一个萌新,说出来的话都是- -大白话 老师使用这个代码排列了数组. Collections.sort(studentList, new StudentComparator()); 第一个studentList是要排列的数组.第二个StudentComparator是选择要"对比的方法". 相当于第二个是用来决定如何比较的. 老师单独写一个,是不是为了更好理解呀?也许..我也母鸡 hhhhh 就是自己想了半天,想bb出来
2018-01-13 回复 有任何疑惑可以回复我~

sort中的第二个参数是一个Comparator的对象,而我们定义的实现Comparator接口的类是一个新的类,即主函数main不在那个StudentComparator类里面,所以在另一个类里面用这个类就需要实例化

0 回复 有任何疑惑可以回复我~

我觉得这里是创建构造方法

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么第二个要创建新对象来比较呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信