读书人

面向对象的有关问题

发布时间: 2012-03-16 16:34:56 作者: rapoo

面向对象的问题
前几天去oracle面试,考官出了这样一个题:
student类有id,name,score三个属性,现在又许多student实例,问:实现对student的name,score的排序(包括升序和降序两种)。
我是这样写的,我写了4个comparator(分别是按name升序、按name降序,按score升序,按score降序),他们都实现Comparator接口,并且我自己仿照Arrays.sort(Object[] a)写了自己的快排算法,实现了考官的功能,但是考官说加入我让你也对id排序,那么你还新建两个comparator吗?当时我就不会了。。。。
大家能不能利用面向对象的思想设计一下这个排序,达到代码的复用,不论按照哪个属性排序都不会新建类,或者说不论排序需求是不变化是否增加都不用再创建新的comparator,给个设计方案就好

[解决办法]
大概这么写吧。

Java code
public class StudentComparator implements Comparator<Student> {    private String property;        private int order;        public StudentComparator(String property, int order) {        this.property = property;        this.order = order;    }    @Override    public int compare(Student o1, Student o2) {        // TODO: 根据property得到比较的属性,order得到顺序还是逆序。        return 0;    }}
[解决办法]
实现一个Comparator,假定类名为C
C.setOrderingProperty(),设置排序用的属性名
C.setOrderingDirection(),设置升序还是降序排序
C.Compare(O1,O2),根据设置的属性名,通过反射取O1,O2的相应属性,并且区分其是数字还是字符串,根据之前设置的升降序进行比较




[解决办法]
不知道行不行?
http://blog.csdn.net/e437032193/article/details/6625849

读书人网 >J2SE开发

热点推荐