博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
aviator 实现 List 的求和、排序、最大、最小值
阅读量:2352 次
发布时间:2019-05-10

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

jdk build 1.7

IDE: myeclipse

详情见代码和附件:

 

 ICalculateService.java

 

package com.bugyun.service;import java.util.List;import com.bugyun.ErrorCode;import com.bugyun.exception.CalculateException;/** *  * 项目名称:aviator-test  * 类名称:ICalculateService.java  * 类描述:  * 创建人:beyond  * 创建时间:2016-3-31 下午5:29:19  * 修改人:  * 修改时间:  * 修改备注:  * @version */public abstract class ICalculateService {	/**	 * @description: 计算集合中的和	 * @param strList	 * @throws CalculateException    	 * @return Long 	 */	public abstract Long sum(List strList) throws CalculateException ;	/**	 * @description: 对集合进行排序	 * @param strList	 * @throws CalculateException    	 * @return List 	 */	public abstract List sort(List strList) throws CalculateException ;	/**	 * @description: 计算集合中的最大值	 * @param list	 * @throws CalculateException    	 * @return int 	 */	public int max(List list) throws CalculateException {		int value ;		try {			value = (Integer) list.get(list.size() - 1);		} catch (Exception e) {			throw new CalculateException(ErrorCode.CALCULATE_MAX);		}				return value ;	}	/**	 * @description: 计算集合中的最小值	 * @param list	 * @throws CalculateException    	 * @return int 	 */	public int min(List list) throws CalculateException { int value ; try { value = (Integer) list.get(0); } catch (Exception e) { throw new CalculateException(ErrorCode.CALCULATE_MIN); } return value; }}

 

 

 CalculateImpl.java 

 

package com.bugyun.service.impl;import java.util.Arrays;import java.util.HashMap;import java.util.List;import java.util.Map;import com.bugyun.rule.CalculateRule;import com.bugyun.service.ICalculateService;import com.googlecode.aviator.AviatorEvaluator;public class CalculateImpl extends ICalculateService {	public Long sum(List strList) {		Map
env = new HashMap
(); String sumName = CalculateRule.SUM; env.put(CalculateRule.LIST, strList); Object result = AviatorEvaluator.execute(sumName, env, true); return Long.valueOf(result.toString()); } @Override public List
sort(List strList) { Map
env = new HashMap
(); env.put(CalculateRule.LIST, strList); String sortName = CalculateRule.SORT; Object result = AviatorEvaluator.execute(sortName, env, true);// Arrays.asList(result) 返回的是一个List
> List sortList = (List)Arrays.asList(result).get(0); return sortList; }}

 

 

 CalculateRule.java

 

package com.bugyun.rule;public class CalculateRule {	public final static String LIST = "list";	public final static String SUM = new StringBuilder("reduce(").append(LIST).append(",+,0)").toString() ;	public final static String SORT = new StringBuilder("sort(").append(LIST).append(")").toString() ;}

 

 

 CalculateException.java

 

package com.bugyun.exception;public class CalculateException extends Exception{	public CalculateException() {		super();	}	public CalculateException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {		super(message, cause, enableSuppression, writableStackTrace);	}	public CalculateException(String message, Throwable cause) {		super(message, cause);	}	public CalculateException(String message) {		super(message);	}	public CalculateException(Throwable cause) {		super(cause);	}}

 

  ErrorCode.java

 

package com.bugyun;/** * 项目名称:aviator-test  * 类名称:ErrorCode.java  * 类描述:  * 创建人:beyond  * 创建时间:2016-3-31 下午5:28:33  * 修改人:  * 修改时间:  * 修改备注:  * @version */public class ErrorCode {	public final static String CALCULATE_MAX = "90101"; // 规则计算: 最大值失败	public final static String CALCULATE_MIN = "90102"; // 规则计算:最小值失败	public final static String CALCULATE_SUM = "90103"; // 规则计算:求和失败	public final static String CALCULATE_SORT = "90104"; // 规则计算:排序失败}

 

 CalculateTest.java

 

package com.bugyun.test;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Collections;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import com.bugyun.exception.CalculateException;import com.bugyun.service.ICalculateService;import com.bugyun.service.impl.CalculateImpl;import com.googlecode.aviator.AviatorEvaluator;/** * 项目名称:aviator-test  * 类名称:CalculateTest.java  * 类描述:  * 创建人:beyond  * 创建时间:2016-3-31 下午5:30:05  * 修改人:  * 修改时间:  * 修改备注:  * @version */public class CalculateTest {	public static void main(String[] args) throws CalculateException {		List ints = new ArrayList(); //		测试集合大小		Long size = 1000000L ;		for(int i=0 ; i
sortList = calculate.sort(ints);// System.out.println("==========> sortList : " + sortList); System.out.println("==========> sortList : " ); System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS").format(new Date())+"\n" ); Long sum = (long) calculate.sum(ints); System.out.println("==========> sum : " + sum); System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS").format(new Date()) +"\n" ); Object max = calculate.max(sortList); System.out.println("==========> max : " + max); System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS").format(new Date()) +"\n" ); int min = calculate.min(sortList); System.out.println("==========> min : " + min); System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS").format(new Date()) ); }}

 

转载地址:http://ihevb.baihongyu.com/

你可能感兴趣的文章
数据库协议
查看>>
SNMP协议
查看>>
RDP远程桌面协议
查看>>
ssh Forward X11
查看>>
搜索引擎知识图谱相关结构化数据挖掘与去歧处理
查看>>
找到n个元素中的第二小元素
查看>>
linux命令之find
查看>>
linux命令学习之cut
查看>>
linux下目录读权限与执行权限区别
查看>>
[think in java]知识点学习
查看>>
linux下线程调试 ulimit core
查看>>
linux 知识点拾遗
查看>>
java equal和==的区别
查看>>
c++中static的用法总结
查看>>
const的常见用法
查看>>
crontab使用手册
查看>>
虚继承与虚基类的本质
查看>>
函数式编程
查看>>
GitHub上整理的一些工具
查看>>
python range 与xrange的区别
查看>>