Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在某个地方有类似于Java的boost::multi_索引吗?_Java_Boost_Multi Index - Fatal编程技术网

在某个地方有类似于Java的boost::multi_索引吗?

在某个地方有类似于Java的boost::multi_索引吗?,java,boost,multi-index,Java,Boost,Multi Index,昨晚我在百灵鸟上偶然发现了multi_索引,当时我的头撞到了一个集合,我需要通过3个不同的键值访问该集合,还需要重新平衡数组语义。嗯,我在boost::multi_index中实现了我的两个愿望之一(3个不同的键值) Java世界中存在类似的东西吗?我不知道boost::multi_index是什么意思,但根据你的其余问题,我认为你可能在谈论一个我认为简短的答案是不,没有明显的等价物 boost多索引类的模板化程度很高,在Java中不容易翻译。有泛型,但它们完全不同。() 如果没有模板,多索引类

昨晚我在百灵鸟上偶然发现了multi_索引,当时我的头撞到了一个集合,我需要通过3个不同的键值访问该集合,还需要重新平衡数组语义。嗯,我在
boost::multi_index
中实现了我的两个愿望之一(3个不同的键值)


Java世界中存在类似的东西吗?

我不知道boost::multi_index是什么意思,但根据你的其余问题,我认为你可能在谈论一个

我认为简短的答案是不,没有明显的等价物

boost多索引类的模板化程度很高,在Java中不容易翻译。有泛型,但它们完全不同。()

如果没有模板,多索引类会是什么样子

我想您的数据类,例如Person,包含像Map实现一样的索引成员。此时,您有一个选择:

  • 将一些“索引”直接添加到 Person类(比如 哈希表)和写查找 功能。管理索引 人内同步 班级
  • 编写一个“IndexProvider”类 这将使索引解耦 功能完全由个人提供- 它必须能够 动态创建不同的索引 我想你会的 通过 回调
  • 一些1)和2)的混合物,比如 索引的抽象基类 功能性,而不是 适当地解耦行为,但 确实提供了一些代码重用
  • 我认为,在大多数情况下,1)是最容易编写、最容易维护的,而且可能是性能最好的。2) 似乎是过度工程化了


    如果有很多数据结构需要索引,另一种选择是将它们存储在数据库中

    我刚刚用Java完成了MultiIndexContainer:。
    我知道它并不完全等同于boost multi_index_容器,但它可能足以满足您的需求。

    重新提出一个旧问题,但请看一看作为解决方案


    有关背景信息,请参见相关问题

    我想你可以在谷歌番石榴图书馆找到答案。可能多贴图可以解决您的需要

    正如在这些线程中所评论的:


    没有,对不起。这是一个弱类型的复合密钥容器的示例。multi_索引是强类型的,但更重要的是它有多个独立的键。也就是说,在人员的多索引容器中,您可以按姓名、SSN或出生日期查找人员。(显然,名称和DOB不是唯一的键)可能有点过头了(因此评论),您是否考虑过为此使用嵌入式DB?有很多轻量级的数据库可以嵌入并运行在内存中,我想这取决于你的性能要求……我发布了一个新的答案,是关于谷歌番石榴的。它可以是一个解决方案
    multi_index
    意味着您可以将一个包含多个键的值放入其中,并按每个键进行分组。想象一下像文件地图一样的东西,一次按名称键入,一次按扩展名键入,等等。界面看起来不错,实际上解决了多索引的要求。哇,也许是时候在这么长时间后恢复我的旧项目了:-)顺便说一句,我已经将它导出到github,但很难说它是什么形状。