|
|
1
12
我已经用过 Apache Commons JXPath 在生产应用程序中。它允许您将XPath表达式应用于Java中的对象图。 |
|
|
2
24
过滤是实现这一点的一种方法,如其他答案中所讨论的。 不过,过滤是不可扩展的。表面上,时间的复杂性似乎是( n )(也就是说,如果集合中的对象数量将增加,则已经不可扩展),但实际上是因为 或更多 测试需要根据查询应用到每个对象,时间复杂度更准确地说是( NT 何处 T 是要应用于每个对象的测试数。 因此,随着其他对象添加到集合中,性能将降低, 和/或 随着查询中测试数的增加。 有另一种方法可以做到这一点,使用索引和集合理论。 一种方法是 建造 指标 上 领域 在存储在集合中的对象中,随后将在查询中测试这些对象。
假设你收集了
然后给出一个查询
另一种方法,我称之为 常设查询索引 .解释:使用常规的迭代和过滤,将迭代集合,并测试每个对象,以查看它是否与查询匹配。所以过滤就像在集合上运行查询。另一种方法是建立一个查询索引,在这个索引中,集合将在查询上运行,但对于集合中的每个对象只运行一次,即使可以多次查询集合。 一 常设查询索引 希望用某种类型的 智能收藏 ,例如,当对象添加到集合中并从集合中移除时,集合将根据已向其注册的所有持续查询自动测试每个对象。如果一个对象与一个常设查询匹配,那么集合可以将其添加/删除到专用于存储与该查询匹配的对象的集合中。随后,可以在O中检索与任何已注册查询匹配的对象。( 一 )时间复杂性。 以上信息摘自 CQEngine (Collection Query Engine) .这基本上是一个NoSQL查询引擎,用于使用SQL类查询从Java集合中检索对象,而不必重复迭代集合的开销。它是建立在上述想法的基础上,再加上一些。免责声明:我是作者。它是开源的,在Maven Central中。 如果你觉得有帮助,请把这个答案投赞成票! |
|
|
3
5
是的,我知道这是一篇老文章,但是技术每天都会出现,答案会随着时间的推移而改变。 我认为这是一个很好的问题来解决兰姆达吉。你可以在这里找到它: http://code.google.com/p/lambdaj/ 这里有一个例子: 寻找活跃客户//(ITerable版本)
LambdaJ版本
当然,在表演中有这种美的影响(有点…平均2次),但您能找到更可读的代码吗? 它有许多特性,另一个例子是排序: 排序迭代
用lambda排序
|
|
|
4
3
继续
根据数据集的大小,使用这种方法可能比使用SQL或外部关系数据库方法更有意义。 |
|
|
5
2
如果需要一个具体的匹配,可以让类实现Comparator,然后创建一个包含所有哈希字段的独立对象,并使用它返回匹配的索引。当您想要在集合中找到多个(可能的)对象时,您必须求助于像josql这样的库(在我使用它的小情况下,它工作得很好)。 一般来说,我倾向于将Derby嵌入到我的小应用程序中,使用Hibernate注释来定义我的模型类,并让Hibernate处理缓存方案来保持一切的快速。 |
|
|
6
1
我将使用一个比较器,以一系列年和车牌模式作为输入参数。然后只需遍历集合并复制匹配的对象。使用这种方法,您可能最终会得到一整套定制比较器。 |
|
|
7
0
这个
然后是排序…那可能是背后的痛苦,但幸运的是有班
|
|
|
Giffyguy · 如何限制在构造向量后调用'resize()'? 4 年前 |
|
|
vytaute · 返回表类型时Oracle函数中的类型错误 4 年前 |
|
|
bbgghh · 在scala中连接两个列表时如何处理不匹配的键 4 年前 |
|
|
dev-chicco · Laravel系列寻找常见物品 4 年前 |
|
|
Mitch · Laravel-雄辩的单品合并系列 8 年前 |
|
|
Kieran · 为什么类X可以从集合继承<X> 8 年前 |
|
|
John · 如何在不返回集合本身的情况下返回集合的数据? 8 年前 |
|
|
Niklas Mertsch · 在泛型集合中实现移除(对象o) 8 年前 |