当前位置: 首页 > 知识库问答 >
问题:

Java或guava映射实现,用于多个指向单个值的键

沈冠宇
2023-03-14

我遇到的情况是,许多键都指向一个值。这种情况源于我正在实现的服务定位器模式-

  • 接口中的每个方法都表示为签名字符串

因此,我需要在用户请求任何匹配键时检索单个值。

从某种意义上说,我需要一个与Guava的MultiMap相反的东西。

我正在寻找最优化的html" target="_blank">解决方案,因为我的键非常相似,尽管对于特定值是唯一的,我不确定使用像HashMap这样的通用Map实现是否足够有效来处理这种情况。

例如以下所有签名

==============

_MockTestService_testOperationOne_StringMockTestService_testOperationThree_org.appops.server.core.service.mocks.MockTestService_getService_org.appops.server.core.service.mocks.MockTestService_start_org.appops.server.core.service.mocks.MockTestService_testOperationTwo_String_int_org.appops.server.core.service.mocks.MockTestService_getName_org.appops.server.core.service.mocks.MockTestService_shutdown_org.appops.server.core.service.mocks.org.appops.server.core.service.mocks.

=======

指向单个类,即组织。appops公司。服务器果心服务模拟。MockTestServiceImpl和我预计会有数百个这样的类(值)和数千个类似的签名(键)。

如果没有优化的方法,我总是可以为我想避免的每组键使用具有复制值的HashMap。

理想的情况下,我想使用一个现成的工具从番石榴。

共有1个答案

郎经纶
2023-03-14

HashMap实际上是你需要的,问题是你误解了它的作用。

如果没有优化的方法,我可以始终使用HashMap,为我想要避免的每组键复制值。

HashMap不会为映射到该值的每个键存储值的副本<代码>哈希映射存储对Java对象的引用。费用总是一样的。哈希映射

 类似资料:
  • 问题内容: 我认为我的问题与此相似:如何实现具有多个键的Map?但有一个重要的区别。在这个问题中(如果我对它的理解是正确的,请告诉我是否正确),这些键应该总是唯一的。我想要一个Map形式: MyMap ,其中的键不一定是唯一的。如果那没有任何意义,我基本上想要一个二维数组,而不是通过坐标对引用元素,而是通过对象对引用它们。 是否有人对可以在其中工作的图书馆或自己实现此想法的好方法有任何想法?就库而

  • 问题内容: 我需要的是一个允许多个键访问单个对象的集合。 我需要对该对象进行频繁的更改。 对于500k +条目,它也必须有效。 问题答案: 任何实现都将执行此操作- 在单独的键下可以添加特定值的次数 没有限制 : 如果您想要一个将单个键与多个值相关联的地图,则称为 多地图 ,您可以从google java集合API或Apache的commons- collections中 获取一个

  • 问题内容: 我正在寻找一种存储键值对的方法。我需要双向查询,但同时我需要为同一个键存储多个值。换句话说,类似于BidiMap,但是对于每个键,可以有多个值。例如,它需要能够保存以下对:“ s1”-> 1,“ s2”-> 1,“ s3”-> 2,并且我需要能够将值映射到每个键,并且对于每个值,获取与其关联的所有键。 问题答案: 因此,你需要多对多关系的支持吗?你可以得到的最接近的是Guava,Mul

  • 由于我不想多次使用流来单独收集每个属性,也不想使用来收集每个属性,是否有任何方法可以用单个流来获得上述属性。

  • 问题 怎样实现一个键对应多个值的字典(也叫 multidict)? 解决方案 一个字典就是一个键对应一个单值的映射。如果你想要一个键映射多个值,那么你就需要将这多个值放到另外的容器中, 比如列表或者集合里面。比如,你可以像下面这样构造这样的字典: d = { 'a' : [1, 2, 3], 'b' : [4, 5] } e = { 'a' : {1, 2, 3},

  • 问题 现在有多个字典或者映射,你想将它们从逻辑上合并为一个单一的映射后执行某些操作, 比如查找值或者检查某些键是否存在。 解决方案 假如你有如下两个字典: a = {'x': 1, 'z': 3 } b = {'y': 2, 'z': 4 } 现在假设你必须在两个字典中执行查找操作(比如先从 a 中找,如果找不到再在 b 中找)。 一个非常简单的解决方案就是使用 collections 模块中的