[英]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:
name=Mark
name=Mark and age > 30
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.