我有一个集合,一个地图列表,地图是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"
答案 0 :(得分:2)
您可以使用Google Collections/Gauva。它使用谓词提供集合过滤:
Iterables.filter(Iterable,Predicate)
有关使用谓词进行过滤的示例,请参阅this answer。
答案 1 :(得分:2)
看看CQEngine - Collection Query Engine。
我作为作者有偏见,但这比依赖迭代和过滤的方法更胜一筹,也更好。
它提供了java.util.Set
(IndexedCollection)的实现,它允许根据对其属性的(任意复杂的)查询来检索对象。
答案 2 :(得分:0)
Quaere可以查询集合。在使用基于内存数据库的解决方案之前,您应该先看一下。
答案 3 :(得分:0)