两个javascript比较 :来自网上
来源:互联网 发布:QQsmtp服务器 端口 编辑:程序博客网 时间:2024/05/16 04:49
在程序开发的过程中总是碰到需要简单动态执行比较的情况,也就是将比较方式作为参数的情况如:
public class DynamicComparor{
public enum OP{//六种比较方式
enum less, lessequal, equal, greatequal, great, notequal
}
//执行比较, 判断a与b的比较是否符合比较方式要求
public boolean execute(OP op, Comparable a, Object b){
int k = 0;
if(a==null&&b!=null){
k=-1;
}else{
k = a.compareTo(b);
}
switch(op){
//在这里得对每一个比较方式都得执行一遍判断
case less:
if(k < 0) return true;
return false;
case lessequal:
if(k < 0)return true;
if(k == 0)return true;
return false;
case equal:
if(k == 0)return true;
return false; case great:
......
}
return false;
}
}
以上的程序需要对每一种比较方式都单独处理,但是每一种比较都是相似的,这个处理看起来不怎么优雅,有重复的代码那么有没有一种办法能够让代码没有那么多重复的代码而且效率一样好呢?有,这个方法就是将比较拆分,单独比较大于、等于和小于三种情况,然后综合起来就能得到比较的结果了,如何比较,请看下面的代码:
package cn.lancy.util.dynamic;
/**一个用于动态比较的比较符号enum*/
public enum CompareOperator{
less (true, false, false), //小于
lessequal (true, true, false), //小于等于
equal (false, true, false), //等于
greatequal(false, true, false), //大于等于
great (false, false, true), //大于
notequal (true, false, true); //不等于
private boolean isNotLess = false;
private boolean isNotEqual = false;
private boolean isNotGreat = false;
//私有的构造函数, 有三个参数,均为boolean类型
//实际上是将每一种比较符分解为三种基本比较 //不大于,不等于,不小于
private CompareOperator(boolean isLess, boolean isEqual, boolean isGreat){
this.isNotLess = !isLess;
this.isNotEqual = !isEqual;
this.isNotGreat = !isGreat;
}
//执行比较的方法,
public boolean execute(Comparable a, Object b){
//获得比较值
int k = -1;
if(a==null){
if(b==null)k=0;
}else{
k = a.compareTo(b);
}
//执行比较,如果k值与基本比较要求的不一致,
//则不符合本比较的条件,返回false
if(this.isNotLess && k < 0)return false;
if(this.isNotEqual && k == 0)return false;
if(this.isNotGreat && k > 0)return false;
//只有完全通过了这三次基本比较要求,那么才算通过了本方式的比较
return true;
}
}
使用方式如下: Integer a = 100, b= 200; for(CompareOperator comparor:
CompareOperator.values()){ System.out.println(comparor.name() + " ==> " + comparor.execute(a, b)); } 执行将返回:less ==> truelessequal ==> trueequal ==> falsegreatequal ==> falsegreat ==> falsenotequal ==> true 如此则代码中不存在重复代码,而比较的方式可以在程序中随意设定
- 两个javascript比较 :来自网上
- javascript 比较两个字符串
- javascript 比较两个日期
- 用 javascript显示时间日期代码(来自网上)
- 用 javascript显示时间日期代码(来自网上)
- 用 javascript显示时间日期代码(来自网上)
- javascript比较两个日期值
- JavaScript正则比较两个字符串
- JavaScript比较两个数组相等
- javascript比较两个时间大小
- JavaScript正则比较两个字符串
- javascript 两个日期比较大小
- Javascript中比较两个时间的大小
- 用javascript比较两个日期的大小
- 两个比较有用的Javascript工具函数
- javascript比较两个日期相差天数
- javascript比较两个日期相差天数
- javascript比较两个日期之间相隔天数
- GridView全选
- 废人一族博客开张
- 虚析构函数(√)、纯虚析构函数(√)、虚构造函数(X)
- 虚析构函数(√)、纯虚析构函数(√)、虚构造函数(X)
- Visual C#中调用Excel表格
- 两个javascript比较 :来自网上
- shell生活序
- 6.1儿童节--每个人都是一个孩子
- 常用英语口语
- 开始学习CUDA……
- X天科技有限公司网站挂马Trojan.DL.Win32.Mnless/Win32.Losabel
- ABAP内表(internal table)有关的系统变量
- 一些常见安全设置
- 请问如何避免用判断来实现求一个整数的绝对值