首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以波兰符号的简单形式合并两个数组列表

以波兰符号的简单形式合并两个数组列表
EN

Stack Overflow用户
提问于 2014-05-14 13:26:34
回答 1查看 199关注 0票数 7

我有两个字符串类型的数组,一个操作数和一个运算符。

代码语言:javascript
复制
ArrayList<String> operands = new ArrayList<String>();
ArrayList<String> operators = new ArrayList<String>();

它们都是这样填满的

代码语言:javascript
复制
operands = { "\"symbol\": \"CHKP%\"", "\"price\": {$gt: 23.72\" };
operators = { "and"};

理想情况下,我会将其转换为一个填充如下所示的ArrayList

代码语言:javascript
复制
ArrayList<String> polishNotation = { "and", 
                   "\"symbol\": \"CHKP%\"", 
                   "\"price\": {$gt: 23.72\" };

对三个元素硬编码波兰符号是很容易的,但是我有不同数量的操作符和操作数(最多有四个操作数和三个操作符)。此代码用于将select语句转换为MongoDB.find()语句。任何关于如何在ArrayList (前缀波兰符号)中实现波兰符号合并的提示都是非常感谢的。

下面是一个SQL语句的示例,它包含3个操作符(“喜欢”、“和”、"<")和三个操作数('FLIR%‘、"price“、"price")和它的MongoDB等效值。我认为使用波兰符号可以帮助我将SQL的查询顺序转换为蒙古语顺序的查询。

在SQL中

代码语言:javascript
复制
SELECT * FROM STOCK WHERE symbol like 'FLIR%' and price > 24.04 and price < 24.39;

在MongoDB中

代码语言:javascript
复制
db.STOCK.find({
    "symbol": "FLIR%",
    "price": {
        "$gt": 24.04,
        "$lt": 24.39
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-14 14:48:04

如果要编写这样的解析器,那么它将涉及一个相当大的项目,因为sql查询可能变得越来越复杂。您可以尝试使用。它具有sql语法。或者GeneralSqlParser或其他解析器来标记您的sql语句,然后构造mongo语句。

如果您不特别编写程序,则可以依赖查询蒙戈项目。它能满足你的需要。请参考那个网站。

尽管如此,您仍然决心通过Java获得一个快速解决方案,您可以尝试下面的程序。这使用汤汁将查询提交到querymongo站点并检索mongo查询。

希望这会有所帮助:)

代码语言:javascript
复制
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

public class MongoQuery {

    public static void main(String[] args) throws Exception {

        System.setProperty("http.proxyHost", "10.9.248.37");
        System.setProperty("http.proxyPort", "18082");

        Document doc = Jsoup.connect("http://www.querymongo.com/")
                .data("MySQLQuery", "SELECT * FROM STOCK WHERE symbol like 'FLIR%' and price > 24.04 and price < 24.39")
                .post();

        for(Element e : doc.select("#mongoQuery")){
            System.out.println(e.val());
        }
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23656044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档