【问题标题】:Merge two arraylists in a simple form of Polish Notation以波兰表示法的简单形式合并两个数组列表
【发布时间】:2014-07-02 14:10:32
【问题描述】:

我有两个字符串类型的数组列表,一个是操作数,一个是运算符

ArrayList<String> operands = new ArrayList<String>();
ArrayList<String> operators = new ArrayList<String>();

他们被填满了

operands = { "\"symbol\": \"CHKP%\"", "\"price\": {$gt: 23.72\" };
operators = { "and"};

理想情况下,我会将其转换为像这样填充的单个 ArrayList

ArrayList<String> polishNotation = { "and", 
                   "\"symbol\": \"CHKP%\"", 
                   "\"price\": {$gt: 23.72\" };

为三个元素硬编码波兰表示法很容易,但我有不同数量的运算符和操作数(最多四个操作数和三个运算符)。此代码用于将 SQL 选择语句转换为 MongoDB.find() 语句。任何关于如何在Polish Notation(前缀波兰表示法)中实现 ArrayList 合并的指针将不胜感激。

[编辑 2] 下面是一个带有 3 个运算符(“like”、“and”、“

在 SQL 中

SELECT * FROM STOCK WHERE symbol like 'FLIR%' and price > 24.04 and price < 24.39;

在 MongoDB 中

db.STOCK.find({
    "symbol": "FLIR%",
    "price": {
        "$gt": 24.04,
        "$lt": 24.39
    }
}

【问题讨论】:

  • 我在这里看到了可能的语言问题,但真的不清楚你想在这里达到什么结果。也许在您的问题中显示您的输入数据和预期结果。
  • 编辑应该更清楚地解释它。如果您还需要什么,请告诉我

标签: java mongodb arraylist polish-notation


【解决方案1】:

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

如果您对编写程序不是特别感兴趣,您可以依赖Query Mongo project。它可以满足您的需要。请参考那个网站。

您仍然决心通过 Java 快速解决此问题,您可以尝试以下程序。这使用 jsoup 将您的查询提交到 querymongo 站点并检索 mongo 查询。

希望这会有所帮助:)

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());
        }
    }
}

【讨论】:

  • 根据您的要求编辑,如果我需要进一步澄清,请告诉我
  • 糟糕.. 我不是那个意思。我期待更新数组列表。那么你是从 sql 查询中生成操作数和运算符的列表吗?还是您希望程序接受字符串查询并生成波兰符号?
  • 我将 sql 查询作为输入。目标是将它们分成更易于使用的子部分,将它们转换为 mongodb 子部分,然后按照 mongodb 需要的顺序将它们重新组合在一起。这有帮助吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 2015-06-15
  • 1970-01-01
相关资源
最近更新 更多