JAVA设计模式之策略模式(1)

本文介绍了常见的排序算法,如选择、插入、希尔、快速、归并和堆排序等,并探讨了如何通过比较器接口实现灵活的排序规则,提高算法的可扩展性和复用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.排序口诀

冒择(选择)路(插入)兮(希尔)快(快速)归(归并)堆(堆排序)

2.int a[] = {2,4,8,3,7}
首先我们写了一个方法,对此数组进行了排序

3.如果我们需要对 float数组排序
那么我们再写一个方法对float数组进行排序

4.如果我们需要对 double数组排序
那么我们再写一个方法对double数组进行排序


5.现在我们要对Cat类比较大小,怎么比较呢?
我们想对Cat比较大小,怎么办呢?
想法很简单,我们可以分析Cat的属性,在方法中比较大小
不妨我们认识是按照高度比较大小


6.现在我们觉得很爽了,对好几种类型进行排序了,但是现在来只狗,
我们又需要对狗进行排序,那我们又得写个对狗进行狗进行排序了

这里就产生一个问题,我们的算法会因为事物的变化不断的发生变化

我们现在希望我们的算法不会因为事物的变化发生改变,我们我们就

自然想到面向对象的多态了,就是算什么我们不确定,Ok,

我们就把比较的对象抽象成一个接口,并且有相应的比较大小方法

现在我们就可以再面向接口的方式写我们的算法了,并且大小规则不

由我们指定。

可问题是,现在我们在猫中是比较高度比较大小,但是将来如果我们用猫的重量比较大小呢
现在就需要有这么一种方式,可以灵活的给出排序的规则


上面其实我们是利用了对象中的compareTo,我们现在可以想到
让compareTo通过比较器接口比较大小,具体的传入比较器的实现接口

9.    @Override
    public int compareTo(Cat o) {
        return comparator.compare(this, o);
    }
 java.lang.Comparable<Cat>
JDK中compareTo(Cat o)传入的是泛型,我们如果实现接口的时候
就指定泛型,那么覆盖的方法自然就可以传入指定的类型了


关键在于compareTo中比较大小的写法也不能写死,比较大小的方法不写死,那就又要面向接口

编程了,首先有个接口,他有个比较大小的方法,我们在比较的时候利用这个接口比较大小就好了,

具体的比较交给实现就好了,这样我们队比较大小的算法进行了抽象,实现了多态和,增加了可扩展性


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值