Java数据处理

  对于形如“(TYPE=SITA##)&&(((CTYP=FPL##)||(CTYP=CHG##)||(CTYP=CNL##)||(CTYP=DLA##)||(CTYP=DL##)||(CTYP=ED##))&&(ADEP=ZSSS##))”的字符串,常以某个事物的判定条件出现,要计算出整个条件最后的结果(true/false)。

  以下给出Java代码

  1 package com.test;
  2
  3 import net.sourceforge.jeval.Evaluator;
  4
  5 public class T1 {
  6
  7     public static void main(String[] args) throws Exception {
  8         String condition ="(TYPE=SITA##)&&(((CTYP=FPL##)||(CTYP=CHG##)||(CTYP=CNL##)||(CTYP=DLA##)||(CTYP=DL##)||(CTYP=ED##))&&(ADEP=ZSSS##))";
  9         condition = replaceExpression(condition, "TYPE=", "SITA", "=");
 10         condition = replaceExpression(condition, "CTYP=", "FPL", "=");
 11         condition = replaceExpression(condition, "ADEP=", "", "=");
 12         System.out.println("condition:"+condition);  //condition:(1)&&(((1)||(0)||(0)||(0)||(0)||(0))&&(0))
 13
 14         /**
 15          * 数字表达式解析工具
 16          *    Evaluator需要下载jeval包,本文后附上链接
 17          */
 18         Evaluator evaluator = new Evaluator();
 19         boolean b = evaluator.getBooleanResult(condition);  // false
 20         System.out.println(b);
 21         System.out.println(evaluator.evaluate("2+3"));  // 5.0
 22
 23     }
 24
 25     /**
 26      *
 27      * @param condition
 28      * @param replace
 29      * @param toBeCompared
 30      * @param operators
 31      * @return
 32      * @throws Exception 对于不符合计算的会抛出异常
 33      */
 34     public static String replaceExpression(String condition, String replace,
 35             String toBeCompared, String operators) throws Exception {
 36         while (condition.contains(replace)) {
 37             int start = condition.indexOf(replace);
 38             int end = condition.indexOf("##", start);
 39             String express = condition.substring(start, end);
 40             express = express.substring(replace.length());
 41             if (">=".equals(operators)) {
 42
 43                 if (Long.parseLong(toBeCompared) >= Long.parseLong(express)) {
 44                     condition = condition.substring(0, start) + "1"
 45                             + condition.substring(end + 2);
 46                 } else {
 47                     condition = condition.substring(0, start) + "0"
 48                             + condition.substring(end + 2);
 49                 }
 50             } else if ("<=".equals(operators)) {
 51                 if (Long.parseLong(toBeCompared) <= Long.parseLong(express)) {
 52                     condition = condition.substring(0, start) + "1"
 53                             + condition.substring(end + 2);
 54                 } else {
 55                     condition = condition.substring(0, start) + "0"
 56                             + condition.substring(end + 2);
 57                 }
 58             } else if (">".equals(operators)) {
 59
 60                 if (Long.parseLong(toBeCompared) > Long.parseLong(express)) {
 61                     condition = condition.substring(0, start) + "1"
 62                             + condition.substring(end + 2);
 63                 } else {
 64                     condition = condition.substring(0, start) + "0"
 65                             + condition.substring(end + 2);
 66                 }
 67             } else if ("<".equals(operators)) {
 68                 if (Long.parseLong(toBeCompared) < Long.parseLong(express)) {
 69                     condition = condition.substring(0, start) + "1"
 70                             + condition.substring(end + 2);
 71                 } else {
 72                     condition = condition.substring(0, start) + "0"
 73                             + condition.substring(end + 2);
 74                 }
 75             } else if ("!=".equals(operators)) {
 76                 if (!express.equals(toBeCompared)) {
 77                     condition = condition.substring(0, start) + "1"
 78                             + condition.substring(end + 2);
 79                 } else {
 80                     condition = condition.substring(0, start) + "0"
 81                             + condition.substring(end + 2);
 82                 }
 83             } else {
 84                 if ("RADDRESS=".equals(replace)) {
 85                     String[] toBeComparedArray = toBeCompared.split(" ");
 86                     String flag = "0";
 87                     for (String toBeComparedString : toBeComparedArray) {
 88                         if (express.equals(toBeComparedString)) {
 89                             flag = "1";
 90                             break;
 91                         }
 92                     }
 93                     condition = condition.substring(0, start) + flag
 94                             + condition.substring(end + 2);
 95
 96                 } else {
 97                     if (express.equals(toBeCompared)) {
 98                         condition = condition.substring(0, start) + "1"
 99                                 + condition.substring(end + 2);
100                     } else {
101                         condition = condition.substring(0, start) + "0"
102                                 + condition.substring(end + 2);
103                     }
104                 }
105             }
106         }
107         return condition;
108     }
109 }

相关jar包下载:http://files.cnblogs.com/files/x-jingxin/jeval.zip

时间: 2024-08-28 07:13:16

Java数据处理的相关文章

Java编程实战宝典PDF (中文版带书签)

Java编程实战宝典PDF 目录 第1篇 Java基础知识入门第1章 Java的开发运行环境( 教学视频:57分钟)1.1 Java运行原理与Java虚拟机1.1.1 Java运行原理简述1.1.2 Java虚拟机1.2 Java的开发环境1.2.1 JDK的安装1.2.2 如何设置系统环境变量1.2.3 JDK安装后的测试与验证1.2.4 编译命令的使用1.2.5 解释执行命令的使用1.2.6 UltraEdit的使用1.3 Java应用程序示例1.4 Java Applet程序示例1.5 本

Spring学习【Spring概述】

从本文开始,我们就要一起学习Spring框架,首先不得不说Spring框架是一个优秀的开源框架.其中采用IoC原理实现的基于Java Beans的配置管理和AOP的思想都是很值得学习与使用的.下面我们就进入正题!介绍Java平台上的一个优秀的开源应用框架Spring,以及Spring框架的历史和Spring框架相关基本知识. [转载使用,请注明出处:http://blog.csdn.net/mahoking] Spring 介绍 Spring是Java平台上的一个开源应用框架.它的第一个版本是由

Hadoop MapReduce编程 API入门系列之Crime数据分析(二十五)(未完)

不多说,直接上代码. 一共12列,我们只需提取有用的列:第二列(犯罪类型).第四列(一周的哪一天).第五列(具体时间)和第七列(犯罪场所). 思路分析 基于项目的需求,我们通过以下几步完成: 1.首先根据数据集,分别统计出不同犯罪类别在周时段内发生犯罪次数和不同区域在周时段内发生犯罪的次数. 2.然后根据第一步的输出结果,再按日期统计出每天每种犯罪类别在每个区域发生的犯罪次数. 3.将前两步的输出结果,按需求插入数据库,便于对犯罪数据的分析. 程序开发 我们要编写5个文件: 编写基类,MapRe

Spring框架快速入门之简介

Spring是java平台上的一个开源应用框架.它的第一个版本是由Rod Johnson写出来的.Rod在他的Expert One-On- One Java EE Design and Development(Java企业应用设计与开发的专家一对一)一书中首次发布了这个框架.该框架也可以移植到.NET的环境下, Spring的框架首次在2003年6月的Apache 2.0的使用许可中发布.第一个具有里程碑意义的版本是2004年3月发布的1.0.2004年9月和2005年3月先后又有重要的版本面世

Spring框架4大原则和主要功能

Spring框架4大原则: 使用POJO进行轻量级和最小侵入式开发 POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称. 2.      通过控制反转IoC.依赖注入DI和基于接口编程实现降低耦合度 3.      通过AOP(面向切面)和 默认惯例 进行声明式编程 4.      使用AOP和模板编程减少模式化代码. Spring框架的主要功能          基于Java Beans的配置管

java dbcp连接池,大数据处理循环多表操作插入事例

基础连接池类: package com.yl.sys.dao; import java.io.InputStream;import java.sql.Connection;import java.sql.SQLException;import java.util.Properties;import java.util.Vector; public class ConnectionPoolTool { private Vector<Connection> pool; private String

大数据处理系列之(一)Java线程池使用

前言:最近在做分布式海量数据处理项目,使用到了java的线程池,所以搜集了一些资料对它的使用做了一下总结和探究, 前面介绍的东西大多都是从网上搜集整理而来.文中最核心的东西在于后面两节无界队列线程池和有界队列线程池的实例 使用以及线上问题处理方案. 1.  为什么要用线程池? 在Java中,如果每当一个请求到达就创建一个新线程,开销是相当大的.在实际使用中,每个请求创建新线程的服务器 在创建和销毁线程上花费的时间和消耗的系统资源,甚至可能要比花在实际处理实际的用户请求的时间和资源要多的多.除 了

数据处理json格式以及java编写注意事项

我们先来学习下JSON定义: (1).JSON是一种轻量级的数据交换格式 (2).JSON基于两种数据结构:Object和Array.其中Object是"名称/值"对的集合. (3).对象:大括号,每一组string-value结合以","分隔,string和value以冒号分隔. JSON数据格式,在Android中被广泛运用于客户端和网络(或者说服务器)通信,非常有必要系统的了解学习. JSON解析 (1).解析Object之一: {"url"

【Java练习】6-2.GPS数据处理

1 package mian; 2 3 import java.util.Scanner; 4 5 public class Main { 6 7 public static void main(String[] args) { 8 // TODO Auto-generated method stub 9 Scanner in = new Scanner(System.in); 10 String s = null, s2 = null; 11 int cak; 12 int B, UTC; 1