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

来源:6-8 学生选课--- 实现学生序列排序

Tom_H

2016-09-16 18:08

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

写回答 关注

4回答

  • 小飞vsKK
    2016-10-04 23:40:06
    已采纳

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

    继承接口:

    http://img.mukewang.com/57f3cd1b0001469305950249.jpg

    57f3cc6e00011b2603440108.jpg

    57f3cc6f0001a30c03890303.jpg

    http://img.mukewang.com/57f3cd4f0001803001930246.jpg

    暮女神

    你做的和老师的不一样!你的是直接在Student类中实现了Comparator接口,而老师的是新建了一个类实现的, 所以要使用该接口,必须先实例化对象!

    2017-02-10 15:56:51

    共 3 条回复 >

  • 学习为致及
    2018-01-13 22:14:13

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

    public Student(){

    }

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

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

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

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

    学习为致及

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

    2018-01-13 22:27:10

    共 1 条回复 >

  • Crown_鄭賓
    2016-09-25 13:12:31

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

  • xwq161683680964
    2016-09-17 11:47:14

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

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题