博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
排序接口与抽象类(java)
阅读量:5283 次
发布时间:2019-06-14

本文共 1456 字,大约阅读时间需要 4 分钟。

定义一个ISort接口,方法有升序(sortAsc),有降序(sortDesc),传入参数是一个实现Comparable接口的对象数组,即不仅仅只对数字排序,还定义了两个默认方法:

compare方法比较两个数的大小,前者大返回1,后者大返回-1,相等返回0,这能减少后续同时实现升序(sortAsc),降序(sortDesc)的冗余代码。

swap方法交换数组里的两个元素值,比较常用。

package com.bsc.algorithm.sort.inf;public interface ISort
> { /** * 升序 * @param data */ void sortAsc(T[] data); /** * 降序 * @param data */ void sortDesc(T[] data); /** * 比较a,b两个值,a大返回1,b大返回-1,相等返回0 * * @param a * @param b * @return a > b ? 1 : (a < b) ? -1 :0 */ default int compare(T a, T b) { int r = a.compareTo(b); return r > 0 ? 1 : (r < 0 ? -1 : 0); } /** * 交换数组data第i和第j个元素 * * @param data * @param i * @param j */ default void swap(T[] data, int i, int j) { T temp = data[i]; data[i] = data[j]; data[j] = temp; }}

 

定义一个AbstractSort抽象类,实现ISort接口,实现sortAsc和sortDesc方法,它们都是调用抽象sort(T[] data,int cr)方法,只是cr参数不一样

 cr参数是通过调用ISort接口的默认方法compare比较两个值的返回结果

package com.bsc.algorithm.sort.inf;public abstract class AbstractSort
> implements ISort
{ @Override public void sortAsc(T[] data) { sort(data,1); } @Override public void sortDesc(T[] data) { sort(data,-1); } protected abstract void sort(T[] data,int cr);}

 在定义了上面的接口与抽象类之后,后面的每一个排序算法,只需要继承AbstractSort类,实现sort(T[] data,int cr)方法即可。

转载于:https://www.cnblogs.com/bsc2012/p/9212008.html

你可能感兴趣的文章
查看linux系统中占用cpu最高的语句
查看>>
[洛谷P1738]洛谷的文件夹
查看>>
ubuntu server设置时区和更新时间
查看>>
【京东咚咚架构演进】-- 好文收藏
查看>>
【HTML】网页中如何让DIV在网页滚动到特定位置时出现
查看>>
文件序列化
查看>>
jQuery之end()和pushStack()
查看>>
Bootstrap--响应式导航条布局
查看>>
Learning Python 009 dict(字典)和 set
查看>>
JavaScript中随着鼠标拖拽而移动的块
查看>>
HDU 1021 一道水题
查看>>
The operation couldn’t be completed. (LaunchServicesError error 0.)
查看>>
php每天一题:strlen()与mb_strlen()的作用分别是什么
查看>>
工作中收集JSCRIPT代码之(下拉框篇)
查看>>
《转载》POI导出excel日期格式
查看>>
code异常处理
查看>>
git - 搭建最简单的git server
查看>>
会话控制
查看>>
推荐一款UI设计软件Balsamiq Mockups
查看>>
Linux crontab 命令格式与详细例子
查看>>