昨晚我在百灵鸟上偶然发现了 multi_index,同时我的头撞到了一个我需要通过 3 个不同的键值访问的集合,并且还需要重新平衡数组语义。好吧,我得到了我的两个愿望之一(3 个不同的关键值)boost::multi_index
。
Java世界中是否存在类似的东西?
昨晚我在百灵鸟上偶然发现了 multi_index,同时我的头撞到了一个我需要通过 3 个不同的键值访问的集合,并且还需要重新平衡数组语义。好吧,我得到了我的两个愿望之一(3 个不同的关键值)boost::multi_index
。
Java世界中是否存在类似的东西?
我刚刚用 Java 完成了 MultiIndexContainer:http ://code.google.com/p/multiindexcontainer/wiki/MainPage 。我知道它不完全等同于 boost multi_index_container 但也许它足以满足您的要求。
复活一个老问题,但看看CQEngine作为一个解决方案。
有关背景,另请参阅相关问题How do you query object collections in Java (Criteria/SQL-like)?
我认为简短的回答是否定的,没有明显的等价物。
boost 多索引类的模板化程度很高,在 Java 中不容易翻译。有泛型,但它们根本不一样。(Java 泛型与 C++ 模板有何不同?为什么我不能使用 int 作为参数?)。
所以如果没有模板,多索引类会是什么样子?
我想你会有你的数据类,例如 Person,包含像 Map 实现这样的索引成员。此时,您有一个选择:
我认为,在大多数情况下,1) 是最容易编写、最容易维护并且可能是性能最高的。2)似乎过度设计。
如果您有很多需要索引的数据结构,另一种选择是将它们存储在数据库中。
我想你可以在 google guava library 中找到答案。可能多图可以解决您的需求。
https://code.google.com/p/guava-libraries/wiki/CollectionUtilitiesExplained
正如这些线程中所评论的:
我不知道 boost::multi_index 是什么意思,但是根据您的其余问题,我认为您可能在谈论多键映射