簡體   English   中英

查詢內存中的集合

[英]querying in-memory collection

我有一個集合,一個Map的Map,地圖是Map<String, String> 我需要用比較來查詢這個集合,邏輯,比如,不在運算符中。 像SQL這樣的東西。

我將從數據庫存儲過程填充列表,所以我不確定大小。 但是,我猜大小不應超過10,000條記錄。

在發布這篇文章時,我正在研究Apache仿函數,我不知道它們是否會在這里提供幫助。

我想到的其他方式是使用內存數據庫Derby來實現這一點。

請讓我知道任何Java庫或任何其他方式。

列表中的地圖如下所示:

Map<String, String> m1 = new Map<String, String>();
m1.put("name","Mark");
m1.put("age","21");
m1.put("city","some city");

Map<String, String> m1 = new Map<String, String>();
m1.put("name","David");
m1.put("age","25");
m1.put("city","other city");

我需要查詢列表以獲取具有以下內容的Map:

  1. name=Mark
  2. name=Mark and age > 30
  3. city not in "other city"

您可以使用Google Collections / Gauva 它提供帶謂詞的集合過濾:

Iterables.filter(Iterable,Predicate)

有關使用謂詞進行過濾的示例,請參閱此答案

看一下CQEngine - Collection Query Engine

我作為作者有偏見,但這比依賴迭代和過濾的方法更勝一籌。

它提供了java.util.Set (IndexedCollection)的實現,它允許基於對其屬性的(任意復雜的)查詢來檢索對象。

Quaere可以查詢集合。 在進行基於內存數據庫的解決方案之前,您應該先看看。

我發現JFilter可以幫助您過濾內存中的數據(java對象)。 以下是JFilter網站的描述。

JFilter是一個簡單而高性能的開源庫,用於在Java集合中過濾(查詢),映射(選擇)和減少(聚合)對象。 查詢以json格式給出,如Mongodb查詢。

我寫了一篇關於使用JFilter和Maps的帖子 ,我將其用作存儲數據和使用JFilter查詢/過濾的通用方法

以下是使用JFilter查詢/過濾內存中數據的帖子的鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM